boxmoe_header_banner_img

Hello! 欢迎来到NS2000的技术小窝~!

加载中

文章导读

计算机组成原理相关知识总结


avatar
edwardqgy 2025年5月8日 104

需要背的:

CPU的组成:运算器,控制器,寄存器组,内部总线

运算器:算数逻辑单元,累加器,数据缓冲寄存器,状态条件寄存器

控制器:指令寄存器,程序计数器,地址寄存器,指令译码器

cpu依据指令周期的不同阶段区分二进制的指令和数据


原反码的整数范围:-(2^{n-1}-1)<–>+(2^{n-1}-1)

补移码的整数范围:-2^n-1^<–>+(2^n-1^-1)

原反码的小数范围:-(1-2^-(n-1)^)<–>+(1-2^-(n-1)^)

补移码的小数范围:-1<–>+(1-2^1-(n-1)^)

浮点数的取值范围:

浮点数加减法运算过程:


复习寻址方式前,熟悉下8086的常见寄存器:参见一文详解8086微处理器系统结构

名称位数作用
AX16算术操作数
BX16逻辑操作数
CX16中间结果
DX16地址

以上四个寄存器是可以被拆开使用的,就是被拆成两个一字节的,这时候它们就是普通的寄存器了,只能存数据,名字变为AH,AL,BH,BL…

其余常见寄存器如:

名称位数作用
SP16栈顶偏移地址
BP16堆栈某一单元偏移地址
SI16源变址寄存器
DI16目的变址寄存器

有些操作的中间结果的存放位置是固定的,指令里不用特意写出来,叫做隐含寻址

立即寻址指的是操作数就是地址:

MOV    A,#30H

直接寻址指的是指令里的地址段就是操作数地址:参考文章

MOV    A,30H

寄存器间接寻址指的是指令里的地址段指向了存放操作数地址的存储单元的地址:

MOV    A,@R0

基址寻址是用指令里的形式地址+基址寄存器得到实际地址:

MOV    A,[BX+SI]   ;基址可以是BX或者BP,变址可以是SI或者DI

变址寻址是用指令里的形式地址+变址寄存器得到实际地址:

MOVC    A,@A+PC

相对寻址使用指令里的形式地址+程序计数器得到实际地址:

SJMP    rel ;PC = PC + rel

关于偏移寻址:8086寻址空间20位,寄存器内16位地址左移四位加上16位的偏移量形成20位
段超越:数据不仅可以在数据段存取,也可以临时改为代码段,附加段,堆栈段

常见标志位:

名称作用
IF中断允许,1开0关
DF地址指针方向,0递增1递减

计算机两种编制方式:内存编制,IO独立编址。
内存的直接用操作内存的指令操作IO,缺点是会占用内存空间,且只能通过内存地址区分操作的是不是IO。
IO独立的用专用指令,程序清晰,译码电路简单,但是访问方法少。


特权指令集:时钟控制指令,程序状态字控制指令,通道控制指令,中断控制指令

程序查询方式例题:2008年下午试题二

8086为16位小端,题中注意给出的数据是否按字节编址,注意题中汇编代码中的寄存器的位数。

CPU占用一次总线进行操作的时间为总线周期;过程称为总线事务,分为四个阶段:总线裁决,寻址阶段,数据传输阶段,结束阶段。
各种总线名称机归属

8086通过MN脚拉高进入最小工作模式,拉低为最大工作模式;区别是总线信号由谁发出,最小:CPU自己;最大:外接的8288.

流水线冒险:
数据冒险:没算完就需要某数
结构冒险:同一周期抢资源
控制冒险:遇到分支指令了

流水线周期:最长的指令阶段作为周期
流水线执行时间:一条指令的时间+(条数-1)流水线周期
流水线吞吐率:条数/时间
加速比:不用流水线的时间/用流水线的时间


关于中断:
CPU在当前指令最后一个时钟周期查询中断信号
中断饱和:把申请的中断按顺序全部响应一遍
中断整个过程哪些是硬件完成的,哪些是软件完成的,关中断之后做了什么

关于存储器:

工作集:运行时被频繁访问的页面集合
局部性原理:
时间局部性原理:相邻的时间访问同一个数据项
空间局部性原理:相邻的空间会被连续访问
根据局部性原理,设计了cache
cache:协调CPU和内存速度的缓冲存储器;通过相联存储器(快表)结构判断命中:根据关键字查询。
直接映像:块号一样才命中;简单,快,空间浪费
全相联映像:块之间随意对应;不容易块冲突,慢
组组相联映像:先分组,组内全相联,即组号相同就能随意存;折衷了
这块考过地址转换

ram:断电数据消失,但是快,运行的时候用,cache比ram还快,越快越贵

flash:分nand和nor两种,寿命上nand长一些,nor带并口,可以直接加载运行。flash都属于按块操作的,即得先把要修改的数据块备份,擦除该块,改完整块写回去。

rom:断电数据都不消失

名字特点
rom出厂烧录好的,不让改
prom一次性写入
eprom电写,紫外线擦除,又叫UV-EPROM
eeprom电可擦写

嵌入式软件:

系统软件:驱动,中间件,操作系统
应用软件:俗称APP
支撑软件:系统分析工具,在线仿真工具,交叉编译器。

BSP:包括bootloader和驱动
其中bootloader运行时会做三件事:(公平,公平,还是TMD公平!(雾))
1.片级初始化:纯硬件层面,寄存器,工作模式,总线等电路的初始化。
2.板级初始化:软硬都有,初始化片外设备,设置数据结构。
3.加载内核:从rom加载内核代码到ram,从执行第一条开始运行。

驱动:(比如意法半导体的hal)
基本功能包括但不限于:硬件启动关闭启用停用,读写。

嵌入式实时操作系统的要求:系统在投入前即具有确定性和可预测性。
失效性判断:结果正确输出及时。

机内自检:BIT
上电BIT
周期BIT:系统空闲时间的自检,此时处于运行状态。
维护BIT:地面维护状态的运行软件。
启动BIT:手动按按钮启动的,用于维护状态或者检修。
此处考过概念

微内核操作系统:内核尽量小,只有基础功能,剩余功能通过切换状态实现通信,故这种操作降低效率,优点是方便移植,可裁剪,稳定性高。
单体内核操作系统:大杂烩,进程间通信效率很高,但占用资源也高,不稳定。

任务管理

先背三态图,再背五态图
前趋图用来表示任务的顺序和制约关系
进程资源图:表示资源分配和请求关系。要求能补全。
考过选择题
任务分配大题:给定一个运行资源分配表,决定几个进程的运行顺序,目的是不发生死锁。进程资源图的化简方法也是同样的目的。

互斥:某一时刻该资源只能被独占,即需要加锁
同步:任务间存在时间制约关系,即同时执行。

信号量操作:出过大题
临界资源:需要互斥方式进行共享的资源。
临界区:访问临界资源的代码。
信号量:表示当前剩余资源的变量。
互斥信号量:初值为1,访问临界资源会用到。
同步信号量:共享资源的访问控制,初值是共享资源的个数。

P操作:该操作位于任务代码的开头,使用时信号量(比如S)先自减1,然后判断是不是变成负数了,是的话证明刚才是0,就是没资源了,那就得排队等着,也就是把自己变为等待态。要是大于等于0,说明刚才起码是1,就是有资源,当前任务就能接着运行。
V操作:某个任务使用时信号量(比如S)先自加1,然后判断是不是大于等于0,是的话就证明刚才起码是-1,证明有任务排队呢,由于这条是在任务代码末尾执行,那判断的结果就是拉出最早也就是排在最前面的等待的任务切换成就绪状态,接下来就要运行那个任务了;如果是大于0的,那就当无事发生,因为这证明没有等着要运行的任务。

抢占式内核不能直接用不可重入函数

调度算法:考过概念默写
先来先服务:
时间片轮转:轮流使用
优先级调度:优先级大的先分配
多级反馈调度:设置不同优先级队列,每个队列内先来先服务。
PS:优先级反转现象指低优先级进程占用了高优先级所需的资源导致其阻塞,且在运行时还被中优先级进程抢占,直到这俩进程运行完释放资源后高优先级才得以运行;解决办法是优先级天花板,即临时提高那个低优先级任务的优先级到最高使其顺利运行完释放资源。

进程死锁:
死锁避免:银行家算法:提前计算执行路径,该路径保证资源分配后可以顺利收回。

任务间通信机制:
低级:信号量
高级:共享内存,消息传递,管道;消息传递是通过自定义缓冲区,管道是一个共享文件,依赖于文件系统。

页面置换算法:

1.最佳:淘汰未来最长时间内不被访问的页面,由于无法预测未来,故理论上无法实现。仅作参照。
2.先进先出:先来的先淘汰,会产生抖动现象。
3.最少最近使用:最近某段时间最少使用的先淘汰,使用较多计数器。无抖动,效率高。
4.淘汰原则:优先淘汰最近未访问,再淘汰最近未修改。
此处出过给一张统计表问淘汰哪个页面的题

段式存储:

每段大小不同,都代表一个程序块,所以共用起来方便,但是因为大小不一样,所以管理的时候需要段号,基址和段长三个表项,即段表的内容,而且内存利用率低,碎片浪费大。
查找时根据段号确定基址,再加上偏移地址就是实际地址了。偏移地址超过段长时视为越界错误
此处出过给定段表算地址的题

文件系统:

负责文件的组织,存储,检索,命名,共享,保护
文件控制块:存放文件名,所有者名,类型,修改时间,大小,路径,口令,保护时限,保护类别。
文件访问:打开关闭读写添加定位。

文件索引:此处考过选择
给定每个结点索引类型问某地址使用的索引方式。

位视图:用比特表示某块是否被使用,0空1用。
可以考察某块磁盘位视图大小,此时注意结果的单位
除了位视图法之外还有链表法和索引法用来管理空闲块

设备管理:

外设数据传输方式:程序查询,程序中断,DMA。
SPOOLING技术:独占设备变为共享设备,设置输入井和输出井两个缓冲区,需要打印的数据在里面排队,按顺序输出。比如共享打印机。


需要算的:

cache给定命中率和访问时间算平均访问时间
计算需要的flash个数:如果题里没说按字节编址,还给了字长,那就是默认按字长编址,之后根据给定的flash芯片的参数计算即可

海明校验:

先计算输出数据位数:n+k < 2^k^ – 1

列个表格,两行n+k列,在2^k^(k = 0…k-1)$的位置填入校验码,其余部分见缝插针填入原数据

异或计算:

第i位:例如i = 7,则i = 2^2^ + 2^1^ + 2^0^

即第七位用到了第1,2,3位的校验码,同理依次列出所有数据位,则每个校验码为“用到”它的原数据比特异或的结果。

CRC校验:

原数添加生成多项式最高阶数个0,除以多项式((阶数+1)位)(模2除法,即按位异或),得到的余数不足阶数位左边用0补齐,替换掉原来对应个数的0即可

给定PERT图计算关键路径,松弛时间等

平均访存时间:

cache命中率 x cache访问时间+内存命中率 x 内存访问时间

页式存储地址计算:

会提供对照表和逻辑地址码,根据页大小推出偏移地址的位数,剩下的高位就是页号,再查表找到块号替换即可

存储器访问时间:

交叉存储器访问时间:r+(m-1)t,其中r是恢复时间或者总线传送周期,t是存储周期(一个字的访问周期)
顺序存储器的访问时间:mt

串口每秒的有效字节数:

baud/(start+stop+8+parity),前提是数据帧包含奇偶校验和停止位,起始位默认都有

可靠性计算:

串联:相乘
并联:1-(所有并联系统同时失效的情况)


资源死锁计算:最少不发生死锁资源数为
进程数X(每个任务所需资源-1)+1
意思是只要多一个,就不会锁。


当天模拟题小记:
V模型相关:2008年下午试题三



评论(已关闭)

评论已关闭