[toc]
软件设计师笔记01_计算机系统知识概述_精简考点
科目一考试中占2-8分左右。

计算机系统硬件基本组成
计算机的基本硬件系统主要由运算器、控制器、存储器、输入设备和输出设备五大部件组成。
- 运算器和控制器集成在一起统称为中央处理单元(CPU)。
- 存储器是计算机系统中的记忆设备,分为内部存储器(速度高,容量小)和外部存储器(速度慢,容量大)。
- 输入设备和输出设备合称为外部设备(简称外设)
中央处理单元CPU
中央处理单元(CPU)是 计算机系统的核心部件,它负责获取程序指令,对指令进行译码并加以执行。除此之外,CPU 还需要对系统内部和外部的中断(异常)做出响应,进行相应的处理。
CPU 主要由运算器、控制器、寄存器组和内部总线等部件组成。
运算器的组成:
- 1)算术逻辑单元(ALU):负责 对数据的算术运算和逻辑运算。
- 2)累加寄存器(AC):是一个通用寄存器。负责暂存算术运算或逻辑运算的中间运算结果。
- 3)数据缓冲寄存器(DR):写内存时,暂存指令或数据字或操作数。
- 4)状态条件寄存器(PSW):保存指令执行后的状态。
控制器的组成:
- 程序计数器PC:存储下一条要执行指令的地址。
- 指令寄存器IR:存储即将执行的指令。
- 指令译码器:对指令中的操作码字段进行分析。
- 时序部件:提供时序控制信号。
进制转换
非十进制数转换为十进制数
在软考中,非十进制数(如二进制、八进制、十六进制)转换为十进制数的方法是按位权展开相加法。
二进制转十进制
- 方法: 从右往左,将二进制数每一位的值(0 或 1)乘以对应位权(2 的幂次),然后求和。
- 位权计算:从右往左,第一位为 2^0^ ,第二位为 2^1^ ,依此类推。
例子:
- 二进制数 1011 转换为十进制:1 x 2^0^ + 1 x 2^1^ + 0 x 2^2^ + 1 x 2^3^ = 1 + 2 + 0 + 8 = 11
八进制转十进制
- 方法:从右往左,将八进制数每一位的值(0-7)乘以对应位权(8 的幂次),然后求和。
- 位权计算:从右往左,第一位为 8^0^ ,第二位为 8^1^ ,依此类推。
例子:
- 八进制数 35 转换为十进制:5 x 8^0^ + 3 x 8^1^ = 5 + 24 = 29
十六进制转十进制
- 方法:从右往左,将十六进制数每一位的值(0-9,A-F 表示 10-15)乘以对应位权(16 的幂次),然后求和。
- 位权计算:从右往左,第一位为 16^0^ ,第二位为 16^1^ ,依此类推。
例子:
- 十六进制数 0xA3 转换为十进制:3 x 16^0^ + A x 16^1^ = 3 + 10 x 16^1^ = 160 + 3 = 163
带小数的非十进制数转换十进制数
方法:整数部分和小数部分,分别按位权展开再相加。
- 整数部分:从右往左,位权为 基数^0^ ,第二位为 基数^1^ ,依此类推。
- 小数部分:从左往右,位权为 基数^-1^ ,第二位为 基数^-2^ ,依此类推。
示例:二进制数 101.11 转换为十进制
- 整数部分:1 x 2^0^ + 0 x 2^1^ + 1 x 2^2^ = 1 + 0 + 4 = 5
- 小数部分:1 x 2^-1^ + 1 x 2^-2^ = 0.5 + 0.25 = 0.75
- 总和:5 + 0.75 = 5.75
十进制数转换为非十进制数
在软考中,十进制数转换为非十进制数(如二进制、八进制、十六进制)的方法是除基取余法(整数部分)和乘基取整法(小数部分)。
十进制整数转非十进制
- 步骤1 除基取余:将十进制整数不断除以目标进制的基数(二进制为 2,八进制为 8,十六进制为 16),记录每次的余数。
- 步骤2 逆序排列余数:直到商为 0,将余数从最后一次到第一次依次排列,即为转换结果。

十进制小数转非十进制
- 乘基取整:将十进制小数不断乘以目标进制的基数,记录每次乘积的整数部分。
- 顺序排列整数部分:直到小数部分为 0 或达到所需精度,将整数部分从第一次到最后一次依次排列,即为转换结果。

十进制数(包含整数和小数)转非十进制
- 整数部分:用除基取余法转换。
- 小数部分:用乘基取整法转换。
- 合并结果:将整数部分和小数部分用小数点连接。

各个进制的加减法
在进行不同进制(如二进制、八进制、十进制、十六进制等)的加减法时,核心原理与十进制运算类似,但需注意"逢基数进一"(加法)和"借一当基数"(减法)的规则。
加法规则
- 从右向左逐位相加(低位到高位)
- 若本位数字之和 小于基数:直接写结果
- 若本位数字之和 大于等于基数:则向高位进1位,然后再继续计算。
减法规则
- 从右向左逐位相减(低位到高位)
- 若被减数本位数字 大于等于 减数本位数字:直接相减
- 若被减数本位数字 小于 减数本位数字。则需要从高位借1位(高位减1),然后再继续计算。
十进制(基数 10)
加法示例:计算 1011 + 110
1 0 1 1
+ 1 1 0
----------
1 1 2 1 (步骤:从右向左逐位相加,遇10进1)二进制(基数 2)
加法示例:计算 1011 + 110
1 0 1 1
+ 1 1 0
----------
1 0 0 0 1 (步骤:从右向左逐位相加,遇2进1)八进制(基数是8)
加法示例:计算 35 + 27
3 5
+ 2 7
------
6 4 (步骤:5+7=12,12=1×8+4→本位写4,进位1;3+2+1=6→本位写6)十六进制(基数是16)
十六进制中,每个位上的数字可以是 0-9 和 A-F(分别表示 10-15)。
加法示例:计算 A3 + 2F
A 3
+ 2 F
------
D 2 (步骤:3+15=18,18=1×16+2→本位写2,进位1;10+2+1=13→本位写D)原码,反码,补码,移码
- 原码:在一串二进制机器数中,数的最高位是符号位。其中0为正符号位,1为负符号位。其余位是绝对值部分。原码主要用于早期计算机中,现在已经淘汰了。
- 反码:正数的反码与原码相同。负数的反码中绝对值部分相比原码是按位取反的。
- 补码:正数的补码与原码相同,负数的补码等于其对应反码的末尾加1。
- 移码:只要将补码的符号位取反,就可以得到对应的移码表示。
浮点数
规格化浮点数的数值范围如下
如果浮点数的阶码(包括1位阶符)用R位的移码表示,尾数(包括1位数符)用M位的补码表示,则这种浮点数所能表示的数值范围如下。

校验码
- 奇偶校验码可以检错,但不能纠错。码距为2
- 循环冗余校验码CRC 可以检错,但不能纠错。由两部分组成,左边为信息码(数据)。
- 海明码可以检错也可以纠错。奇偶校验码和CRC循环冗余校验码方法可以检错,但不能纠错。
海明码通过在数据位n之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错。
海明码公式: 2^k^ >= n+k+1 其中数据位是n,校验位是k
三种校验码的区别

寻址方式
- 立即寻址:操作数在指令中的寻址方式。
- 寄存器寻址:操作数在寄存器中的寻址方式。
- 直接寻址:操作数的地址在指令中的寻址方式。
- 寄存器间接寻址:操作数的地址在寄存器中的寻址方式。
- 间接寻址:操作数的地址的地址在指令中的寻址方式。
存储器中各个寻址方式的速度对比:
立即寻址 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址
指令系统
CISC与RISC
CISC 全称为Complex Instruction Set Computing 复杂指令集。
- 指令种类多
- 指令复杂度高
- 寻址方式复杂
- 通用寄存器数量一般
- 不支持流水线技术
- 采用微程序控制技术实现译码。
RISC 全称为Reduced Instruction Set Computer,精简指令集。
- 指令种类少
- 指令复杂度低
- 寻址方式固定
- 通用寄存器数量大量
- 支持流水线技术
- 采用硬布线控制逻辑来实现译码。

流水线
流水线是为了模仿工业生产过程的流水线(如汽车装配线)而提出的一种指令控制方式。
流水线执行指令时间的公式 T = NT + (K-1)t
- NT是第一条指令执行的完整时间。
- t 是流水线中耗时最长的哪个部分的时间。
- k 是流水线中一共需要执行的指令数。
流水线的吞吐率公式 = 总的指令数 / (流水线执行指令时间) = 总的指令数 / ( NT + (K-1)t )
存储系统
高速缓存(Cache)
在计算机的存储系统体系中,Cache是(除寄存器以外)访问速度最快的。主要解决CPU与主存之间速度容量不匹配问题。
高速缓存(Cache)的各种地址映像方法
由于高速缓存Cache中的内容是与主存的内容是一一映像的。因此有多种地址映像方法。
- 直接映像:是指主存的块与Cache块的对应关系是一一对应的。优点是硬件电路设计简单,缺点是Cache块冲突率高。
- 全相联映像:允许主存的任一块可以调入Cache存储器的任何一个块的空间中。优点是Cache块冲突率低、灵活性好。缺点是访问速度慢、硬件电路设计成本太高。
- 组相联映像:是前两种方式的折中方案,即组采用直接映像方式、块采用全相联映像方式。
注意:主存和高速缓存Cache之间的地址映射是由硬件直接完成的。
发生块冲突从少到多的顺序:全相联映射-->组相联映射-->直接映射。
多级Cache:在多级Cache计算机中分为一级(L1Cache),二级(L2Cache)等。
Cache的命中率与Cache容量的关系是:容量越大,命中率越高。
内存编址计算 *****
存储单元个数 = 最大地址 - 最小地址 + 1
编制内容:
- 按字编址: 存储体的存储单元是字存储单元,即最小寻址单元是一个字。
- 按字节编址:存储体的存储单元是字节存储单元,即最小寻址单元是一个字节。
总容量 = 存储单元个数 * 编制内容。
根据存储器中要求的容量和选定存储芯片的容量。就可以计算出存储器中所需要芯片的个数。
总的芯片数 = 存储器的总容量 / 每个存储芯片的容量
输入输出技术
输入/输出(I/O)控制方式有三种,分别是程序控制方式、程序中断方式和直接存储器方式(DMA)。
- 程序控制方式:程序控制方式是指 CPU 主动通过执行程序来查询外设的状态,判断外设是否准备好。从而为外设设备提供输入/输出服务。方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。
- 程序中断方式:与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度。
- 直接存储器存取方式(DMA):DMA方式是指通过DMA硬件来控制内存和设置的数据交换,这种方式可以不需要CPU处理。即绕过了CPU来进行数据交换的方式。
直接内存存取 DMA
DMA全称是直接内存存取。DMA方式是为了在主存与外设之间,添加一个DMA硬件,从而实现高速、批量数据交换。
DMA方式比程序控制方式与中断方式都高效。这种方式可以不需要CPU处理。即绕过了CPU来进行数据交换的方式。
总线
一般来说,任何连接两个以上电子元器件的导线都可以称为总线。总线一般分为三类,分别是数据总线、地址总线、控制总线。
- 数据总线:用于传输数据的,双向的。
- 地址总线:用于传输CPU发出的地址数据的,是单向的。
- 控制总线:用于传输控制信号的,双向的。
加密技术
加密技术是最常用的安全保密手段,数据加密的技术分为对称加密和非对称加密。
- 对称加密:是指加密密钥和解密密钥是相同的。
- 非对称加密:是指加密密钥和解密密钥是不同的。
常见的对称加密算法包括:DES,3DES,RC-5,AES等
常见的非对称加密算法包括:RSA,ECC等。
常见摘要算法:MD5,SHA-1,SHA-256等。
系统可靠性
可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。
- 串联系统的可靠性:各个子系统的可靠性乘积。即 R = R1 * R2 * ....Rn
- 并联系统的可靠性:1减去各个子系统的不可靠性的乘积。即 R = 1 -(1-R1)(1-R2)...(1-Rn)
其中R1为子系统1的可靠性。
可靠性公式
可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。
记忆: 可靠性公式 = t / (1+t) 其中t为平均无故障时间。
可用性公式
可用性是在给定的时间点上,一个系统能够按照规格说明正确运作的概率。
记忆: 可用性公式 = t / (1+t) 其中t为平均失效间隔时间。
可维护性公式
可维护性是在给定的使用条件下,在规定的时间间隔内,使用规定的过程和资源完成维护活动的概率。
记忆: 可维护性公式 = t / (1+t) 其中t为平均修复时间。
