专为软考中级软件设计师考生打造,聚焦计算机系统核心原理深度解析。从CPU架构、存储器层次、指令执行到I/O系统,逐层拆解硬件与软件的协同逻辑,结合真题剖析缓存优化、流水线冲突等高频考点。通过二进制运算、中断机制等实战案例,打通“电路层→系统层→应用层”知识链路,助力考生构建底层思维模型,提升代码效率分析与系统设计能力,实现理论与考试技巧的双重突破。
一、CPU
- 组成:运算器、控制器、存储器、IO设备
- 功能:
- 控制器:
- 程序控制
- 操作控制
- 时间控制
- 运算器:处理数据
- 运算器
- 组成:
- 算术逻辑单元ALU
- 累加寄存器AC
- 数据缓冲寄存器DR
- 状态逻辑寄存器PSW
- ALU:负责处理数据实现数据的逻辑运算和算术运算
- AC:为ALU执行算术逻辑运算,提供数据暂存结果
- 控制器:
- 组成:
- 指令寄存器IR(存储指令(地址码+操作码))
- 程序技术器PC(存储指令地址)
- 地址寄存器(AR)
- 指令译码器(ID)
- 作用:保证程序正确执行,能够处理异常事件
- 扩展:指令包括地址码和操作码
- 练习题:
- CPU中ALU的部件有、加法器等等
- 在CPU的寄存器中,IR对用户是完全透明的(透明:用户不能访问、看不到它)
二、计算机的基本单位
位/比特=b/bit |
|
1B=8bit |
|
1kB=1024B |
|
1MB=1024KB |
|
1GB=1024KB |
|
1TB=1024GB |
|
扩展:
最小的数据单位为bit
最小的存储单位为byte
三、进制转换
- 单位
进制 |
单位 |
十进制 |
D |
二进制 |
B |
八进制 |
O |
十六进制 |
H |
- 进制的加法
- 逢n进1
- 进制的减法
- 借1当n
- 例题1:内存按字节从B3000H到DABFFH容量区域是:159kb
- 技巧为: 大减小加1
- 例题2:按字节,用32k8bit芯片,构成从a0000h到dffffh的内存,需要芯片为8
四、原码、反码、补码、移码
- 原码:
- 0为正数
- 1为负数
- 特征:零(0)的正负补码和移码都是相同
- 补码为:00000000
- 移码为:10000000
- 【【x】补】补=【x】原
- 转换流程
- 表示范围
- 当机器字长为n时,例n 为8
定点整数 |
结果 |
|
原码 |
-((2的n-1次方)-1)~((2的n-1次方)-1) |
-127~127 |
反码 |
-((2的n-1次方)-1)~((2的n-1次方)-1) |
-127~127 |
补码 |
-((2的n-1次方))~((2的n-1次方)-1) |
-128~127 |
移码 |
-((2的n-1次方))~((2的n-1次方)-1) |
-128、~127 |
解释:n-1为最高符号位;
(2的n-1次方)-1表示为从零开始表示
- 记录:原码表示法和补码表示法是计算机中表示数据的两种编码方法,在计算机系统中常采用补码表示和运算数据,是因为补码可是简化计算机运算部件设计
- 例题:如果“2x”的补码为“90h”那x的真值为:-56
五、浮点数
基本概念
- 用阶码和尾码表示的数称为浮点数
- 表示形式:
- (E表示阶码,F表示尾码)
- 注意:一般小阶向大阶对齐,浮点数向右移
规格化浮点数
- 格式包含:阶符+阶码+数符+尾数
- 浮点数所能表示的数值范围主要由阶码决定,所表示的精度由尾数决定
- 注意:规格化就是将尾数的绝对值限定在[0.5,1]
- 如果浮点数的阶码(包括一位阶符)用R为的移码表示,尾数(包括一位的数符)用M为表示的补码表示范围为:
- 最小值:-1*2^((2^R-1)-1)
- 最大值:(1-2^(-M+1))*2^((2^R-1)-1)
- 例题:16位浮点数,阶符为1为,阶码为6位,数符为1位,尾数为8位,阶码用移码表示,尾数用补码表示,求范围
- R=1+6=7 M=1+8=9
- 最小值为-2^63
- 最大值为:1-2^(-8)*2^63
- 浮点数当机器字长为n时,定点数的补码和移码可表示2^n个数,而原码和反码表示2^n-1个
扩展:
IEEE754中阶码采用移码表示,尾数采用原码
题目:
1 、 阶码用补码,尾数用原码,求1 0001 0 0000000001的浮点数
解:E=-15 F=2^10
结果:N=2^(-15) *2^(-10)
六、寻址
扩展:存储系统的层次结构
指令:
包括:操作码和地址码
分类:
- 立即寻址:操作数就包含在指令中
- 直接寻址:操作数存放在内存中,指令中直接给出操作数所在的存储单元地址
- 寄存器寻址:操作数存放在某个寄存器中,指令中存放寄存器名
- 寄存器间接寻址:操作数存在内存中,内存地址存放在寄存器中
- 间接寻址:指令中存操作数地址的地址
访问速度:
立即寻址》寄存器寻址》直接寻址》寄存器间接寻址》间接寻址
了解:
指令系统中采用不同的寻址方法目的:扩大寻址空间并提高编程灵活度
题目:
计算机字长32为,内存3GB,按字节编址,寻址范围为:
七、奇偶校验码
注意:(只能检错,不能纠错)
- 奇偶检验码的码距为2
- 通过在编码中增加一位校验位使编码的1的个数为奇数(奇校验)或偶数(偶校验)
- 奇校验:1为奇数个
- 例:红色为校验位
- 1 0101 -----------------》 1 0101
- 偶校验:1为偶数个
- 例:红色为校验位
- 0 0101 -----------------》 0 0101
- 注意:两种只能检验出奇数个错,不能检验出偶数个错误
- 例:红色为校验位
- 1 0101 -----------------》 1 0100 (检验出结果为错误)
- 1 0101 -----------------》 1 0110 (没有检验出错误)
- 码距:是指一个编码系统中任意两个合法编码间至少有多少个二进制不同
- 例:01和00 码距为1
- 奇偶校验码分类:
- 水平奇偶校验码
- 垂直奇偶检验码
- 水平垂直校验码
八、海明码
扩展:
码距为2(具有检错能力)
码距为3(才可能具有纠错能力)
注意:可以检错和纠错
- 码距为3
- 是利用奇偶性来检错和纠错的检验方法
- 通过在数据位间的特定位置插入K个校验和扩大码距实现检错和纠错
- 设数据位为n位,检验位为k为,则关系需要满足:
例题:数据位为16,最少加(5)位校验位,实现海明码
解: n =16 ,
k等于2
九、循环冗余校验码(CRC)
- 码距为2,可以检错不能纠错
- 它利用生成多项式为k个数据位产生R个校验位来进行编码,编码长度为K+R
- 在求CRC编码时,采用的是模2运算
十、RISC和CISC
RISC 精简指令计算机 |
CISC 复杂指令计算机 |
|
指令种类 |
少,精简 |
多,丰富 |
指令复杂度 |
低(简单) |
高(复杂) |
指令长度 |
固定 |
变化 |
寻址方式 |
少 |
复杂多样 |
实现编码(译码)方式 |
硬线控制逻辑(组合逻辑控制器) |
微程序控制技术 |
通用寄存器 |
多、大量 |
一般 |
流水线技术 |
支持 |
支持 |
十一、流水线
扩展:
顺序执行流程:输入》运算》输出
- 流水线公式:(n为指令数)
- 第一条指令的执行时间+(n-1)*最长段的时间
- 例:一条流水线三段,第一段0.1秒,第二段0.2秒,第三段0.3秒,需要执行100条,求时间
- 解:(0.1+0.2+0.3)+(100-1)*0.3=30.3s
- 操作周期:等于一周期内使用时间最长的时间段
- 例如以上例题,操作周期就为0.3s
- 吞吐率:为最长时间段的倒数
- 例:如以上例题:吞吐率为 1/0.3
- 执行n条指令的吞吐率(p):
- p=n/流水线公式(第一条指令的执行时间+(n-1)*最长段的时间)
- 加速比=不使用流水线的实际时间/使用流水线的时间
- 例:以上例题:加速比=60s/30.3s
十二、高速缓存
- 用来存放当前最活跃的程序和数据,特点是位于CPU与主存之间,速度是主存的1~5倍,对程序员来说是透明的。
- Cache存储器部分用来存储内存的部分拷见信息,控制器部用来判断CPU要访问的数据是否在cache存储器中
- 替换算法:使缓存获得尽可能高的命中率,有随机替换算法、先进先出算法、近期最少使用算法、优先替换算法 。
- cache命中率:cache容量越大,则命中率越高,随着 cache容量的增加,其失效率接近0 %
- 映像方法(3个):
- 直接映像(一对一):主存中的块和cache中的块是固定的
- 全相联映像(一对多):主存中的块可以任意的存入cache中空余的块中
- 组相联映像:内存和cache都分好组,内存组可以任意映射到cache中的组,同时,内存组中的块可以在映射cache组中任意空余位置存入
- 冲突排名(小到大):
- 全 相联映像》》组相联映像,直接映像
- 重要记:cache与主存的映射是由硬件自动完成的。
十三、中断
- 概念:计算机在执行程序的过程中,遇到紧急事件后,暂停当前正在运行的程序,转去执行有关服务程序,处理完成后自动返回源程序。
- 断点(中断向量):提供中断服务程序的入口地址
- 中断向量表中存储一个或多个中断向量
- 中断响应时间:从发出中断请求开始,到进入中断服务程序
- 保存现场:目的:返回来执行源程序
- 扩展题:
- 实现多级中断嵌套,使用(堆栈)来保护断点和现场最有效。
- 由IO设备提出的中断请求是可屏蔽中断,电源掉电是不可屏蔽中断
十四、输入输出(I/O)控制方式
三个方式:程序查询方式、中断驱动方式、直接存储器方式(DMA)
- 程序查询方式(程序直接控制方式):
- 一次只能读/写一个字(一字=8bit)
- CPU和IO(外设)只能串行工作,CPU需要一直轮询检查,长期处于忙等状态,CPU利用率低
- 中断驱动方式
- 一次只能读/写一个字(一字=8bit)
- IO设备通过中断信号主动向CPU报告IO操作完成
- CPU和IO可并行工作
- CPU利用率得到提高
- 由CPU将数据放入内存中
- 直接存储器方式(DMA)
- 一次读写的单位是:块
- CPU和IO设备可是并行工作
- cpu仅在传输数据块的开始和结束时在干预
- 有外设直接将数据存入内存中
- 扩展题:
- CPU是在一个总线周期结束时响应DMA请求的。
- 采用DMA方式传输数据时,每传输一个数据都需要 占用一个 存储周期
十五、总线
- 微机中总线的可分为:数据总线、地址总线、控制总线
- 常见总线(11种,有时间看看名称):
- PCI总线:是目前微型机上广泛采用的内总线,采用并行传输方式。
- SCSI总线:小型计算机系统接口(SCSI)是一条并行外总线,不属于系统总线
- 例题:
- 若内存容量为4GB,字长为32,则(地址总线和数据总线的宽度都为32)
- 解释:2^32=4GB
- 在计算机系统中采用总线结构,便于实现系统的积木化结构,同时可以(减少信息传输线的数量)
- 总线服用方式可以(减少总线中信号线的数量)
- 总线宽度为32bit,时钟频率为200Mhz,若总线上每5个时钟周期传送一个32bit的字,则该总线的带宽为(160)MB/s
- 解:200Mhz*(32bit/5)=40M*32bit=1280Mbit/s
- 因为单位为MB/s 所以需要再除以8 结果为160MB/s
- 并行总线适合近距离高速数据传输,串行总线适合长距离数据传输
十六、加密技术和认证技术
1. 加密技术
- 主要用于窃听
- 技术包括:对称加密和非对称机密
- 对称加密(私有秘钥加密):
- 特点:加密和解密使用同一把对称秘钥
- 优点:加密和解密速度很快,适用于加量大量明文数据
- 缺点:对称秘钥在网络传输的过程中容易被黑客获取
- 非对称加密(公开秘钥加密)
- 加密和解密不是同一把秘钥,分为公钥和私钥
- 用公钥加密只能用私钥解密,用私钥加密只能用公钥解密
- 不能通过一把推出另一把
- 传输方式:用接收方的公钥加密明文
- 优点:
- 可以实现防止窃听的效果
- 秘钥分发没有缺陷
- 缺点:
- 加密解密速度慢
- 混合加密(扩展)
2. 认证技术
- 摘要:
- 算法:MD5
- 用于防止篡改
- 实现:将发送的明文进行Hash算法后得到的摘要放在密文后一起发送过去,接收方解密后的明文进行相同Hash算法得到的再进行对比,一致没有被篡改,否则被篡改。
- 数字签名:
- 用于防止假冒
- 需要和摘要结合使用
- 加密:发送发生成摘要后,用自己的私钥对摘要进行签名(加密),得到数字签名放在密文后一起发送
- 解密:接受方在收到数据后,用发送方的公钥对数字签进行验证(解密),验证成功则没有被假冒。
- CA:权威机构
- 数字证书
- 主要用于身份认证
- 用户向CA机构申请数字证书,将个人信息和公钥发给CA机构,CA机构颁给用户数字证书
- 数字证书用CA的私钥进行进行签名(加密),用CA的公钥验证(解密),从而得到用户的公钥
- 扩展:
- 私钥是不可以被交换的
3. 例题
- 公钥体系中,公钥用于加密和认证,私钥用于解密和签名
- 加密用户防止被动攻击,认证用于防止主动攻击
十七、加密算法
口诀:中间有E对称,中间S非对称
- 对称秘钥(私钥、私有秘钥加密,共享秘钥加密)算法:
- DES
- 3DES
- RC-5
- IDEA
- AES(分组加密)
- RC4
- 非对称秘钥(公钥、公开秘钥加密)算法:
- RSA
- ECC
- DSA
- Hash函数
- MD5摘要算法(512分组处理输入信息,输出由4个32位组成,生成128位散列值)
- SHA-1安全散列算法
十八、可靠性公式
- 串联系统:
- 公式:R=R1*R2*....*Rn
- 并联系统:
- 公式:R=1-(1-R1)*(1-R2)*.......*(1-Rn)
- 计算技巧:先算并再算串
- 例题:
解:
十九、杂题
- 程序计数器(PC)可被程序员访问;
- 不可以被程序员访问
- 指令寄存器(IR)
- 存储器地址寄存器(MDR)
- 暂存寄存器(DR)
- 存储器数据寄存器(MAR)
- 指令寄存器IR的位数取决为:指令字长
- 同或:相同为1,不同为零
- 异或:相同为0,不同为1
- 双符号位时,符号位为01或10表示溢出
- 主动攻击:重放、IP地址欺骗、拒绝服务、系统干涉(有疑问是被动还是主动????)、修改数据命令
- 被动攻击:流量分析、会话拦截(有疑问是被动还是主动????)
二十、错题总结
- VLIW是超长指令字的简称
- 流水线的吞吐率是指:
- 单位时间流水线处理的任务数
- 或
- 最长流水线操作时间的倒数
- 在复杂指令集系统中CISC中,由于指令数量众多且复杂,所以主要考虑微程序控制器执行指令方式
- 定点小数表示中,只有补码能表示-1
- 在采用定点二进制的运算器中,减法运算一般是通过:补码运算的二进制加法器实现的