软件设计师考试—第一章 计算机组成与结构

第一章 计算机组成与结构

1 计算机系统知识

1.1 计算机硬件组成

1.运算器:执行所有的算术运算(加减乘除等)、逻辑运算(与或非等)。

  • 算术逻辑单元ALU:实现对数据的算术和逻辑运算
  • 累加寄存器AC:为ALU提供工作区,暂时存放运算结果或源操作数
  • 数据缓冲寄存器DR:在对内存进行读写时,作为缓冲区暂时存放内存的指令或数据
  • 状态条件寄存器PSW:保存运算结果的条件码,包括状态标志与控制标志

2.控制器:控制整个CPU的工作,包括程序控制、时序控制。

  • 指令寄存器IR:暂存即将执行的指令
  • 程序计数器PC:存放下一条指令执行地址
  • 地址寄存器AR:保存当前CPU所访问的内存地址
  • 指令译码器ID:分析指令操作码

3.存储器:内部存储器 (内存,容量小,速度快,临时存放数据)、外部存储器(硬盘、光盘等,容量大,速度慢,长期保存数据)

4.输入设备:鼠标键盘

5.输出设备:显示器

其他概念

  • 外部设备:输入设备+输出设备+外存储器(磁盘)

  • 主机:CPU+主存储器(内存)

  • CPU:运算器+控制器+寄存器组+内部总线,用于程序控制、操作控制、时间控制、数据处理
    在这里插入图片描述

1.2 数据的进制转化

1.进制的表示
二进制(如0b0011)
八进制
十六进制(如0x18F、18FH

2.进制的转换

(1) R进制转十进制:按权展开法,将R进制的每一位数值与R^n相乘后累加,n与数值与小数点之间的位置有关。

例:
十六进制转十进制: 0 x 18 F = 15 ∗ 1 6 0 + 8 ∗ 1 6 1 + 1 ∗ 1 6 2 = 399 0x18F=15*16^0+8*16^1+1*16^2=399 0x18F=15160+8161+1162=399
二进制转十进制: 10100.01 = 2 4 + 2 2 + 2 − 2 = 20.25 10100.01=2^4+2^2+2^{-2}=20.25 10100.01=24+22+22=20.25

(2)十进制转R进制:短除法,十进制除以R,记录余数,若商不为0,继续除以R,直至商为0,而后将所有余数从下到上记录得到转换后的R进制数。比如200转六进制,得532。

例:十进制转六进制:200/6=33-----2 33/6=5------3 5/6=0----5 得532。

(3)m进制转n进制:先将m转为十进制,再将十进制转为n进制。
(4)特殊情况
二进制转八进制时,二进制的每三位数转换为一位八进制数,位数不是三的倍数,则在前面补0。
同理,二进制转十六进制,每四位数可转换为一位数。比如二进制101101,转换为八进制为5,转换为16进制为2D。

1.3 数据的表示

机器数:各种数值在计算机中的表示形式,为二进制数,默认8位。机器数的实际数值为真值。机器数分为定点数和浮点数。

定点数:分为有符号数和无符号数,有符号数的符号用0(正数)、1(负数)表示,分为定点整数、定点小数;无符号数默认正数,小数点隐含,不占位置。
在这里插入图片描述

编码方式(码制)
  • 原码:二进制数值,最高位为符号,0的原码有两种形式(八位机器数):00000000(正0)、10000000(负0)。

  • 反码:正数的反码等于原码;负数的反码是除符号位,其他位取反。0的反码有两种形式:00000000(正0)、11111111(负0)。

  • 补码:正数的补码等于原码;负数的补码是负数的反码加1,若溢出舍弃高位。0的补码只有一种形式:00000000。计算机底层存储数据用的是补码,方便运算,效率最高。

  • 移码:用作浮点运算的阶码。正数负数的补码首位(符号)取反得到移码。移码方便用于比较数值大小。
    在这里插入图片描述

    例1:
              数值1                数值-1             1-1
    原码 0000 0001       1000 0001     1000 0010
    反码 0000 0001       1111 1110       1111 1111
    补码 0000 0001       1111 1111       0000 0000
    移码 1000 0001       0111 1111       0000 0000

    例2:
    若机器字长为8,[45]原=[45]反=[45]补=00101101,[45]移=10101101
    [-45]原=10101101,[-45]反=11010010,[-45]补=11010011,[-45]移=01010011

带符号位的长度为n的机器数,各种编码的取值范围如下:
在这里插入图片描述

计算分析:
当n=3,所有编码为000,001,010,011,100,101,110,111,分别对应+0,1,2,3,-0,-1,-2,-3
所以定点整数的取值范围是111~011,除去第一位的符号,即11,数值加1后得100,转换十进制得取值范围为2^(n-1)-1。…

浮点数运算

浮点数表示:N=尾数*2^阶码,尾数是带符号的纯小数,一般用补码,阶码是带符号的纯整数,一般用移码。

浮点数所能表示的数值范围由阶码决定,数值精度由尾数决定。如101.011=0.101011*2^3

格式:阶码符号(阶符)-阶码-尾数符号(数符)-尾数。尾数采用规格化方法,带符号尾数的补码必须为1.0xxx(负数)或0.1xxx(整数)。

运算:

1.对阶:使两个数的阶码相同,小阶数想大阶数看齐,较小的阶码增加几位,尾数就右移几位;

2.尾数计算:相加,若是减运算,则加负数;

3.结果规格化:尾数表示规格化,带符号尾数转换为1.0xxx或0.1xxx。

逻辑运算

算术运算:加减乘除等基本运算

关系运算:大于、小于、等于==

逻辑运算:与&、或|、非!、异或(数值相同0 数值不同1)、左移<<、右移>>

运算顺序:非!>算术运算符>关系运算符>与&&>或||>赋值运算符

短路原则:在逻辑运算中,并不是所有运算都会执行,一旦结果确定就停止执行。如a&&b&&c,如果a&&b为假,则不会继续执行。a||b||c,如果a||b为真,则不会继续执行。

1.4 校验码

校验码:用来检查传送的数据是否正确。主要是为了解决计算机各部件进行数据传输和交换,确保传送过程的正确无误,一是为了提高硬件电路的可靠性,二是提高代码的校验能力。校验码编码分为两类:合法编码、错误编码。合理的设计错误编码和编码规则,可以在数据传输的时候发现某种错误是就会变成错误编码,从而达到检验错误的目的。

码距:指的是一个编码系统中任意两个合法编码之间最少有多少个二进制位不同。一般来说,码距越大,越利于纠错和检错。

1.奇偶校验码

​ 在编码中增加一位校验码(一般放在头部),使编码中1的个数为奇数(奇校验)或偶数(偶校验)。数据接收后,通过计算编码中1的个数是偶数还是奇数来判断接收数据是否正确。只能检1位错,不能纠错

2.循环冗余校验码CRC

​ 原始编码进行多项式运算(模2除法,不发生借位进位),所得结果作为校验位加在原始数据之后进行发送。校验码位数越长,校验能力越强。只能检错,不能纠错。
在这里插入图片描述

例题:
1.原始报文为11001001,生成多项式 G ( x ) = x 4 + x 3 + x + 1 G(x)=x^4+x^3+x+1 G(x)=x4+x3+x+1。CRC编码求解如下:
(1)由多项式 G ( x ) = x 4 + x 3 + x + 1 G(x)=x^4+x^3+x+1 G(x)=x4+x3+x+1得到二进制除数为11011
(2)多项式为5位数(R+1),所求校验码长度R=4,原始报文左移4位为110010010000
(3)11001001000用除数11011进行模2除法,得到校验码为1111
110010010000
11011
—————————————
0010001
0011011
—————————————
00010100
00011011
—————————————
000011110
000011011
—————————————
00000010100
00000011011
—————————————
00000001111
(4)最终编码为110010011111.
(5)校验:接收到的数据与多项式11011进行模2运算,若余数为0,校验正确。

3.海明码

​ 在奇偶校验码(分组奇偶校验)的基础上,增加了对编码长度的敏感。海明码只能检测出2位错,纠1位错
校验位的长度取决于编码长度, 假设编码长度是n,校验位有k位,则:2ᵏ ≥ n + k+1,k为满足该公式的最小整数值; 校验码的位置:第i位的校验码,位于编码的 2 i − 1 2^{i-1} 2i1位置。

例:求1011的海明码。
1.编码长度为4,根据公式得校验码长度为3,位置分别为1、2、4,即最终编码为101x1xx。
H7 H6 H5 H4 H3 H2 H1
D1 D3 D2 P3 D1 P2 P1
1 0 1 x 1 x x
2.校验码P1校验:第3、5、7位=>1异或1异或1=1
校验码P2校验:第3、6、7位=>1异或0异或1=0
校验码P3校验:第5、6、7位=>1异或0异或1=0
3.校验码为100,最终编码为1010101

校验位校验数据逻辑计算

在这里插入图片描述

纠错原理:每个校验位校验一组数据,当发生错误时,其实就是在多个集合取并集差集的操作。

2 计算机体系结构

2.1计算机体系结构分类

Flynn分类法:按照指令流和数据流划分为四类

体系结构类型结构关键特性代表
单指令流单数据流SISD一个控制部分;一个处理器;一个主存模块单处理器系统
单指令流多数据流SIMD一个控制部分;多个处理器;多个主存模块各处理器以异步的形式执行同一条指令并行处理机;阵列处理机;超级向量处理机
多指令流单数据流MISD多个控制部分;一个处理器;多个主存模块不可能,不实际目前没有
多指令流多数据流MIMD多个控制部分;多个处理器;多个主存模块能够实现作业、任务、指令等各级全面并行多处理机系统;多计算机
2.2计算机指令

指令组成:操作码+地址码,操作码决定要完成的操作,地址码指参加运算的数据及所在的单元地址。

指令执行过程:取指令(程序计数器PC)-指令译码-按指令操作码执行-形成下一条指令地址

指令寻址方式

顺序寻址:按照PC中存放的下一条指令地址,一条指令接着一条指令顺序执行。

跳跃寻址:下一条指令不是由PC给出,而是由本条指令给出。程序跳跃后,按新的指令地址继续执行,同时,PC中的地址更新为新的指令地址。

指令操作数寻址方式

立即寻址:地址码中直接存放操作数,速度快,灵活性差

直接寻址:地址码中存放的是操作数在主存中的地址

间接寻址:地址码所指向的存储单元中存放操作数所在的地址

寄存器寻址:地址码是寄存器的编号,寄存器中存放操作数

寄存器间接寻址:地址码是寄存器的编号,寄存器中存放操作数的地址

2.2.1 指令系统
指令系统类型指令寻址方式实现方式其它
复杂指令集计算机 CISC数量多,使用频率差别大,可变长格式支持多种微程序控制技术(微码)研制周期长
精简指令集计算机RISC数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store操作内存支持方式少(寄存器寻址方式为主)增加通用寄存器减少访问内存次数;硬布线逻辑控制(硬件线路)为主,快速实现译码;适合采用流水线优化编译,有效支持高级语言
2.2.2 指令流水线

流水线概念:在程序执行时多条指令重叠进行操作的一种准并行处理实现技术,各种部件同时操作多条指令的不同部分,以提高各部件的利用率和指令的平均执行速度。

​ 串行:多条指令按顺序执行,一条执行完成后再执行下一条。

​ 并行:多条指令完全同时执行。

流水线计算

n条指令,分为k段过程,每段过程执行时间分别为t1,t2…tn,计算方式如下:
串行执行时间:n*(t1+t2+…tn)
流水线周期:t=执行过程中最长段所用时间
流水线执行时间:1条指令执行时间+(指令条数-1)*流水线周期
理论公式:(t1+t2+…tn)+(n-1)t
实践公式:k
t+(n-1)*t
注:通常默认理论方式,二者的不同在于流水线的建立时间不同,实践方式按照最长段时间执行每一个段。

流水线加速比:串行执行时间/流水线执行时间
超标量流水线技术:常规流水线时度为1的,即每个流水线阶段执行一个部分,当度大于1时,就是超标量技术,当度为3(d=3)时,相当于三条流水线并行执行,即取值、分析、执行每个阶段都同时处理三条指令,因此超标量流水线计算式,指令条数n=n/d,然后再使用流水线计算公式

在这里插入图片描述

在这里插入图片描述

流水线吞吐率计算

流水线吞吐率(TP):单位时间内流水线所完成的任务数量或输出的结果数量。

流水线吞吐率TP=执行指令条数/流水线理论执行时间=n/((t1+t2+…tn)+(n-1)t)
流水线最大吞吐率TPmax=执行指令条数/流水线实践执行时间=n/(k
t+(n-1)*t)(n趋向于无穷大)=1/t

在这里插入图片描述


2.3 存储系统
2.3.1 层次化存储结构

在这里插入图片描述

局部性原理是层次化存储结构的支持。

时间局部性:刚被访问的内容,立即又被访问。

空间局部性:刚被访问的内容,邻近的空间很快被访问。

2.3.2 存储器分类

1.按存储器位置:

  • 内存
  • 外存

2.按内容存取

  • 相联存储器(如Cache),把数据内容作为关键字按顺序读写

3.按地址(寻址方式)存取

  • 随机存储器RAM:如内存
  • 顺序存储器SAM:如磁带
  • 直接存储器DAM:如磁盘,介于随机与顺序之间
  1. 按工作方式
  • 读写存储器RAM:如内存DRAM,掉电数据会丢失
  • 只读存储器ROM:如BIOS,掉电数据不丢失
2.3.3 高速缓存Cache

Cache概念:在计算机的存储系统体系中,Cache是访问速度最快的层次(若有寄存器,则寄存器最快)。

组成:控制部分+存储器,存储器用来存放主存的部份拷贝信息,控制部分判断CPU要访问的数据是否在Cache中,若在则命中,开始直接对cache存储器寻址;若不在,则依据一定的算法从主存中替换。

使用Cache改善系统性能的依据是程序的局部性原理:时间局部性、空间局部性。

如果用h表示cache的访问命中率,t1表示cache的周期时间,t2表示主存的周期时间,以读操作为例,使用“Cache+主存”的系统的平均周期 t3=h*t1+(1-h)*t2
(1-h)又称为失效率(未命中率)

地址映像方法

​ 地址映像是将主存与cache的存储空间划分为若干大小相同的块,并进行相联,从而在CPU读写数据时,将CPU中主存单元的地址转换为cache存储器地址。地址映射由硬件自动完成

直接相联映像:主存中的块与Cache中的块通过块号对应,二者块号相同才能命中。电路复杂度低,冲突率高,速度快。

全相联映像:主存中任意一块与Cache中任意一块都可以对应。电路复杂度高,冲突率低,速度慢。

组相联映像:将主存与Cache先分组再分块,组与组之间直接映像,组内全相联映像。电路复杂度中等,冲突率中等,速度中等。

2.3.4 主存编址计算

bit(比特位):计算机内存的基本单位,只有两种形式,0或1。

1B(字节)=8bit
1KB(千字节)=1024B
1MB(兆字节)=1024KB
1GB(吉字节)=1024MB
1TB(太字节)=1024GB

存储单元

存储单元地址:使用二进制或十六进制给出地址的范围

存储单元数量=最大地址-最小地址+1

存储单元内容(编址内容)

​ 按字编址:存储单元是字存储单元,即最小寻址单位是一个字(1bit)

​ 按字节编址:存储单元是字节存储单元,即最小寻址单位是一个字节(8bit)

存储器计算

单个存储芯片容量=存储单元数量*编址内容

存储器总容量=单个存储芯片容量*芯片总数

例:内存按字节编址,地址从A0000H到CFFFFH的内存,共有(192KB)字节,若用存储容量为64K8bit的存储器芯片构成该内存空间,至少需要(3)片。
存储单元容量: ( C F F F F H − A 0000 H ) B = ( 30000 H − 1 ) B = ( 3 ∗ 2 16 − 1 ) / 2 10 K B = 192 K B (CFFFFH-A0000H)B=(30000H-1)B=(3*2^{16}-1)/2^{10 }KB=192KB CFFFFHA0000HB=30000H1B=(32161)/210KB=192KB
芯片总数=192KB/(64K
8bit)=192/64=3

2.4 输入/输出技术

数据传输控制方式

  1. 程序控制(查询)方式:分为无条件传送和程序查询方式两种。方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。

  2. 程序中断方式:CPU执行与数据传输并行,数据传输完成后,发送中断信号,CPU进行响应。与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度,例如鼠标键盘。

    中断处理过程如下:中断响应->中断处理->中断恢复

    ​ CPU无需等待也不必查询I/O状态,当I/O系统准备好以后,发出中断请求信号通知CPU;

​ CPU接受到中断请求后,保存正在执行程序的现场(保存现场存储在栈),打断的程序当前位置为断点;

​ (通过中断向量表:保存中断服务程序入口地址)转入I/O中的服务程序的执行,完成I/O系统的数据交换;

​ 返回被打断的程序继续执行(恢复现场);

  1. DMA方式(直接主存存取):不需要CPU执行程序指令来传送数据,由DMA硬件实现。DMA是为了在内存与外设之间实现高速、批量数据交换而设置的,控制更高效,例如移动硬盘。

    DMA执行过程:DMA控制器DMAC向总线裁决逻辑提出总线请求,CPU执行完当前总线周期即可释放总线控制权,由DMAC控制系统总线。此时DMA响应,通过DMAC通知I/O接口开始DMA传输。

  2. 通道方式:硬件方式,效率更高

  3. I/O处理机:硬件方式,效率最高

2.5 总线系统

总线:分时双工,一条总线同一时刻仅允许一个设备发送,但能允许多个设备接收。

总线分类:

数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或需要存储的数据。

地址总线(Address Bus):用来指定在RAM之中储存的数据的地址。

控制总线(Control Bus):将微处理器控制单元的信号,传送到周边设备。

串行总线:长距离低速传输

并行总线:短距离高速传输

3 系统可靠性分析

可靠性指标

​ 平均无故障时间MTTF=1/λ,λ为失效率

​ 平均故障修复时间MTTR=1/μ,μ为修复率

​ 平均故障间隔时间MTBF=MTTF+MTTR

​ 系统可用性=MTTF/(MTTF+MTTR)*100%

  • ​ 在实际应用中,一般MTTR很小可以忽略不计,所以通常认为MTBF=MTTF。
  • ​ 可靠性可以用MTTF/(1+MTTF)来度量。

串联系统与并联系统

​ 串联系统可靠性R=R1*R2*...*Rn

​ 并联系统可靠性R=1-(1-R1)*(1-R2)*...*(1-Rn)

4 性能指标

(1)字长和数据通路宽度

(2)主存容量和存取速度

(3)运算速度

  • 主频(2.8GHz)与CPU时钟周期

    CPU时钟周期=1/主频

  • 平均每条指令的平均时钟周期个数CPI与每(时钟周期)运行指令条数IPC

  • 百万条指令每秒MIPS与每秒百万个浮点操作MFLOPS

    MIPS=指令条数/(执行时间*10^6)=主频/CPI=主频*IPC

    MFLOPS=浮点数操作次数数/(执行时间*10^6)

(4)吞吐量与吞吐率

(5)响应时间RT与完成时间TAT

(6)兼容性

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值