软件设计师(1) – 计算机系统知识

软考中级,软件设计师笔记;之前没有学过计算机及程序原理方面的知识,借着软考的机会,系统学一下;

1、计算机结构

硬件:运算器、控制器、存储器、输入设备和输出设备;

存储器:主存(内存)和辅存(外存);

CPU:由运算器、控制器、寄存器和内部总线组成

运算器

  • 算数逻辑单元ALU:数据的算数运算和逻辑运算;
  • 累加寄存器AC:通用寄存器,为ALU提供一个工作区,暂存数据;
  • 数据缓冲寄存器DR:写内存时,暂存指令或数据;
  • *状态条件寄存器:存状态标志与控制标志(也有将其归为控制器的);
  • 算数逻辑单元ALU:数据的算数运算和逻辑运算;
  • 累加寄存器AC:通用寄存器,为ALU提供一个工作区,暂存数据;
  • 数据缓冲寄存器DR:写内存时,暂存指令或数据;
  • *状态条件寄存器PSW:存状态标志与控制标志(也有将其归为控制器的);

控制器

  • 程序计数器PC:存储下一条要执行指令的地址
  • 指令寄存器IR:存储即将执行的指令;
  • 地址寄存器AR:记录当前CPU访问的内存单元的地址;
  • 指令译码器ID:对指令中的操作码字段进行分析解释;

控制器中的时序控制逻辑:提供时序控制信号;

2、计算机体系结构分类 – Flynn分类

体系结构类型结构关键特征代表
单指令流单数据流
SISD
控制部分:一个
处理器:一个
主存模块:一个
单处理器系统
单指令流多数据流
SIMD
控制部分:一个
处理器:多个
主存模块:多个
各处理器以异步形式
执行同一条指令
并行处理机
阵列处理机
超级向量处理机
多指令流单数据流
MISD
控制部分:多个
处理器:一个
主存模块:多个
被证明不可能暂无,有文献称
流水线计算机为此类
多指令流多数据流
MIMD
控制部分:多个
处理器:多个
主存模块:多个
能够实现作业、任务、
指令等各级全面并行
多处理机系统
多计算机

3、指令、寻址和指令系统

指令

  • 机器语言的一个语句,是一组有意义的二进制代码;
  • 基本格式: 操作码字段 地址码字段;
  • 操作码指操作类型,如加法、减法;
  • 地址码字段包含操作数的地址及操作结果的存放地址等;
  • 从地址结构的角度可以分为三地址指令、二地址指令、一地址指令、零地址指令;

寻址方式

  • 立即寻址:操作数直接在指令中,速度快,灵活性差;
  • 直接寻址:指令中存放的是操作数的地址;
  • 间接寻址:指令中存放了一个地址,这个地址对应的内容是操作数的地址;
  • 寄存器寻址:寄存器存放操作数;
  • 寄存器间接寻址:寄存器内存放的是操作数的地址;

指令系统:CISC 和 RISC

CISC:复杂指令集,指令数量多,指令的使用频率差别大,寻址方式支持多种;

RISC:精简指令集,指令数量少,指令的使用频率接近,定长格式,大部分为单周期指令,操作寄存器;寻址方式少,增加通用寄存器,适合采用流水线;

4、流水线

流水线是指在程序执行多条指令重叠进行操作的一种准并行处理实现技术;

流水线周期为执行时间最长的一段;

一条指令的执行过程可以分解为取指、分析和执行三步;

流水线时间计算公式

1条指令的执行时间 + (指令条数 – 1)* 流水线周期;

理论公式:(t1+t2+……+tk) + (n – 1) * t

实践公式:k * t + (n – 1) * t

  • k 为执行的步骤数量,比如上面的执行执行过程,就是3步,取指、分析和执行
  • t 为流水线周期,即执行过程中时间最长的一段时间;
  • n 为执行指令的次数;
  • 实践公式中,给了第1条指令以充足的执行时间,用最长的一段时间 * 步骤数量;每个步骤都按最长时间来算;

超标量流水线

多条流水线同时进行,有几条流水线,它的度就是几;

流水线吞吐率

单位时间内流水线完成的任务数量或输出结果数量;

TP = 指令条数 / 流水线执行时间

最大吞吐率 TPmax = 1 / 流水线周期

5、存储结构

  • CPU:寄存器,速度最快,容量小,成本高;
  • Cache:按内容存取,速度次之;
  • 内存(主存):随机存储器(RAM)和只读存储器(ROM);
  • 外存(辅存):硬盘、光盘、U盘等;

Cache

使用Cache改善系统性能的依据是程序的局部性原理(时间局部性、空间局部性),可以防止抖动;

命中:CPU访问的数据在Cache中,就是命中;

如果以h代表对Cache的访问命中率,t1表示Cache的周期时间,t2表示主存储器周期时间,以读操作为例,使用“Cache+主存储器”的系统平均周期为t3,则:t3 = h * t1 + (1-h) * t2;(命中Cache,则在Cache中取,未命中从主存中取);

地址映像是将主存与Cache的存储空间划分为大小相同的页(块);

例如:Cache容量为8MB,划分为16页,每页512KB,主存1GB,划分为2048页,每页512KB

  • 直接相联映像:硬件电路较简单,但冲突率高;上面的例子中,将主存拆分成2048/16=128个区,主存中每个区的第n页数据要放到Cache中的第n页中;
  • 全相联映像:电路难于设计和实现,只适用于小容量的Cache,冲突率较低;主存中每页的数据可以放入Cache中的任意一页;
  • 组相联映像:介于上面两者之间;主存先分区,然后每个区分组,Cache也按照同样的规则分组,主存和Cache中的每个组一一对应,即1组的数据只能放到一组中;上面的例子中,主存分128个区,每个区中有16页,分成8个组,Cache也分成8个组,主存中n区m组的数据只能存储到Cache中的m组中;

6、内存编址与计算

  • 按字编址:存储体的存储单元是字存储单元,最小寻址单位是一个字,实际计算中,需要知道字长是多少;
  • 按字节编址:存储体的存储单元是字节存储单元,最小寻址单位是一个字节;

1Byte = 8 bit,1字节 = 8 比特(位);

根据存储器所要求的容量和选定的存储芯片容量,就可以计算出所需芯片的总数:总片数 = 总容量 / 每片的容量

7、总线和串并联系统

一条总线同一时刻仅允许一个设备发送,但允许多个设备接收;

总线分类:

  • 数据总线:在CPU与RAM之间来回传送需要处理或是需要存储的数据,双向;
  • 地址总线:用于传送CPU发出的地址信息,单向;
  • 控制总线:传送控制信号、时序信号和状态信息等;


串联系统的可靠性 = 所有系统可靠性相乘

并联系统的可靠性 = 1 – (1-R1) * (1-R2) *……* (1-Rn)

可靠性:能不能通;

8、码制

原码:数据的二进制表示;最高位(最左侧)为符号位,0-正数,1-负数;

反码:正数的反码和原码相同;负数的反码为除符号位,各位取反;

补码:正数的补码和原码相同;负数的补码为反码加1;

移码:补码的基础上,符号位取反;

  • 负数的原码和补码之间的相互转换,都是采用“除符号位,各位取反加1”的方法;
  • 在计算机内部,用补码来处理加减操作(非原码加减);
  • 移码在浮点数中用到,表示阶码;
  • 补码和移码比原码和反码少一个数,-0;

比如机器字长为8(用8个2进制表示数据),则

数值 +1数值 -1
原码0000 00011000 0001
反码0000 00011111 1110
补码0000 00011111 1111
移码1000 00010111 1111

9、数据表示

定点整数:小数点在最低有效位之后,即整数,比如 23.、102.,其中的小数点可省略;

定点小数:小数点在最高有效位之前,符号位之后,比如 -.2,+.56

在数字表示中,小数点不占位;


浮点数 = 尾数 * 基数 ^ 指数

  • 一般位数用补码,阶码用移码表示;
  • 两个浮点数运算,先要进行对阶,小数向大数看齐,并进行算术右移;
  • 阶码的位数决定数字的范围,位数越多范围越大 ;
  • 尾数的位数决定数的有效精度,位数越多精度越高;

10、校验码

码距:一个编码系统中任意两个合法编码之间至少有多少个二进制位不同;

奇偶校验码

通过在编码中增加一个校验位来来使编码中1的各位为奇数(奇校验)或偶数(偶校验),使码距变为2;

奇偶校验,可检查1位的错误,不可纠错;

循环校验码CRC

模2除法,除一个固定的数x,把余数作为校验码拼到数据之后;校验的时候,用加了校验位的数据除x,如果能除尽,说明数据无误;只能检错,不能纠错;

除数x是由多项式来的,x^4 + x^3 + x + 1,=> x^4 + x^3 + 0*x^2 + x + 1,可以得出除数为 11011

海明码

可检测,也可纠错

m为数据位个数,校验位的个数r,则:2^r – 1 >= m + r;

校验码的位置:2^n

如果这篇文章对你有用,可以点击下面的按钮告诉我

0

发表回复