【软件设计师】计算机组成原理与体系结构

数据的表示

进制的转换

  • R进制转十进制使用按权展开法

    • 将R进制数的每一位数乘以它的权,然后相加,即可求得对应的十进制数值
    • 十进制:(1010)_{10}=1\times 10^{3}+0\times 10^{2}+1\times 10^{1}+0\times 10^{0}
    • 二进制:(1010)_{2}=1\times2^{3}+0\times2^{2}+1\times2^{1}+0\times2^{0}
    • 其中,十进制第2位的位权为10,第3位的位权为100;而二进制第2位的位权为2,第3位的位权为4。对于 N 进制数,整数部分第 i 位的位权为Ni-1,而小数部分第 j 位的位权为N-j
  • 十进制转R进制使用短除法
    • 整数部分:除R取余,直到商为0时为止,将余数逆序排列
    • 小数部分:乘R取整,直到小数部分为零,将整数顺序排列
  • 二进制转八进制与十六进制
    • 二进制数转换成八或十六进制数时,从小数点向左和向右把每3或者4个二进制数分成一组,直接写出每一组所代表的数值,小数点后不足位数补0
    • 八或十六进制数转换成二进制数时,从小数点向左和向右将一个数分成3或者4个二进制数。按顺序排列,得到的就是转换后的二进制数

原码、反码、补码、移码

  • 原码:二进制数(最高位是符号位,0为正,1为负)
  • 反码:正数的反码与原码相同。负数的反码则是在原码的基础上,符号位不变,数值位取反
  • 补码:正数的补码与原码相同。负数的补码则是在反码的基础上,末尾加1。最适合加减运算的数字编码(符号位参与运算)
  • 移码:在补码的基础上,符号位取反,常用于表示浮点数的阶码部分(码值大者对应的真值就大)
  • 范围
    码制 定点整数(阶码) 定点小数(尾数) n=8
    原码  -(2^{\left ( n-1 \right )}-1)\sim+(2^{\left ( n-1 \right )}-1) -(1-2^{\left ( -n+1 \right )})\sim+(1-2^{\left ( -n+1 \right )}) -127~127
    反码 -(2^{\left ( n-1 \right )}-1)\sim+(2^{\left ( n-1 \right )}-1) -(1-2^{\left ( -n+1 \right )})\sim+(1-2^{\left ( -n+1 \right )}) -127~127
    补码 -2^{n-1}\sim+(2^{n-1}-1) -1\sim+(1-2^{-n+1}) -128~127
    移码 -2^{n-1}\sim+(2^{n-1}-1) -1\sim+(1-2^{-n+1}) -128~127

定点数与浮点数

  • 定点数:所有数据的小数点位置是固定的,小数点位置在数据最高位是定点小数,在最低位是定点整数,会有溢出的情况发生
  • 浮点数:一个含小数点的R进制数N可以表示为N=M\times R^{e}
    • M是尾数,决定数值的精度。e是指数(阶码),决定数值的范围。当尾数M≥0,M的范围在区间[0.5,1)。当尾数M<0,M的范围在区间(−1,−0.5]
    • 浮点数运算时,先对阶,小阶对大阶,尾数右移阶差位,然后尾数相加对结果规格化,既尾数范围
    • 数值范围:最大正数(M最大正数,E最大正数)、最小负数(M最小负数,E最大正数)

校验码

  • 奇偶校验码:通过在编码中增加一位校验位来使编码中1的个数为奇数(奇校验)或偶数(偶校验)
  • 海明校验码:在n位被校验数据位中,插入K个校验码,通过扩大码距来实现检错和纠错。其校验位的个数满足关系2^{k}-1\geqslant n+k
    • 校验位在海明码中的位置是固定在2i,即海明码的1,2,4,8,16…位
    • 一个校验位可校验多个数据位,每个校验位的取值等于其被校验数据位之和,被校数据位海明位号等于各校验位海明位号之和
    • 纠正错误只要将出错位变反即可,自动纠正1位错
  • 循环冗余校验码(CRC):用于发现和纠正信息传送过程中连续出现的多位错误。只不过实际应用的时候基本不纠错而是直接丢弃,因为纠错的代价太高
    • 在K位被校验数据位之后再拼接R位校验码,得到K+R位编码。能够与生成多项式相除,余数为0,则说明传送正确
    • 存在一个最高次幂为R的多项式G(X),根据G(X)可以生成K位信息的校验码,G(X)叫做这个CRC码的生成多项式
    • 校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2R除以生成多项式G(x)得到的余数就是校验码。

计算机结构

硬件系统

  • 主机
    • CPU:按访问速度排序为(通用寄存器> Cache>内存>硬盘)
      • 运算器:负责数据的处理和加工。执行所有算术运算,执行所有逻辑运算并进行逻辑测试(与或非,值比较,零值测试)
        1. 算术逻辑单元ALU:执行各种算术运算(加、减、乘、除)、逻辑运算(与、或、非、异或)、移位运算
        2. 累加寄存器AC:是一个通用寄存器,暂时存放ALU运算的结果信息
        3. 数据缓冲寄存器DR:CPU与内存储器沟通的桥梁。当我们对内存储器进行读(出)写(入)操作时,用来暂时存放数据
        4. 状态条件寄存器PSW:一个由各种状态条件标志拼凑而成的寄存器,用来存储在运算的过程中相关的标志位
      • 控制器:决定程序中指令执行顺序和产生完成每条指令功能的全部控制命令
        1. 程序计数器(PC):用于指出当前指令在主存中存放的地址,通常程序顺序执行是(PC)+1,自动产生下一条要执行指令的地址。
          * PC具有寄存信息和计数两种功能,又称为指令计数器。程序执行分为:顺序执行,转移执行。
          * 程序开始执行之前,将程序的起始地址送入PC,该地址在程序加载到内存时确定,因此PC的内容即是程序第一条指令的地址
          执行指令时,CPU会自动修改PC内容,确保永远是将要执行的下一条指令地址,顺序执行的话,只是简单的加一
          转移指令时,指令地址根据当前地址加上一个向前或向后的偏移量得到,或者根据转移指令给出的直接转移地址得到
        2. 指令寄存器(IR):存放正执行的指令,直到本条指令结束,对用户完全透明,位数取决于指令字长
          CPU执行指令的时候,先把它从内存中加载到缓冲寄存器中,再送入IR暂存,指令译码器根据IR的内容来产生各种微操作指令
        3. 指令译码器(ID):用来分析指令功能,决定控制器产生完成指令功能的控制命令
          * 时序控制逻辑:控制指令的执行时间顺序
          * 总线逻辑:为多个功能部件服务的信息通路的控制电路
          * 中断逻辑:控制各种中断请求,根据优先级来对中断请求排队。逐个交给CPU执行
        4. 时序部件:产生控制命令所需的时间信号
      • 寄存器组:专用寄存器,通用寄存器。上面的都是专用的,通用的可以给程序猿控制(提高速度,貌似没卵用)
    • 内存储器(主存储器)
  • 外部设备
    • 输入设备
    • 输出设备
    • 外存储器(辅助存储器)

软件系统

  • 系统软件
  • 中间件
  • 应用软件

Flynn分类法

基于指令流和数据流的数量对计算机进行分类的方法
体系结构类型 结构 关键特性 代表 具体
单指令流单数据流(SISD) 控制部分:一个
处理器:一个
主存模块:一个
指令部件每次只对一条指令进行译码,并只对一个操作部件分配数据 单处理器系统 SISD机器是一种传统的串行计算机,它的硬件不支持任何形式的并行计算,所有的指令都是串行执行。并且在某个时钟周期内,CPU只能处理一个数据流。早期的计算机都是SISD机器,如冯诺.依曼架构,如IBM PC机,早期的巨型机和许多8位的家用机等
单指令流多数据流(SIMD) 控制部分:一个
处理器:多个
主存模块:多个
各处理机以同步的形式执行同一条指令 并行处理机
阵列处理机
超级向量处理机
SIMD是采用一个指令流处理多个数据流。这类机器在数字信号处理、图像处理、以及多媒体信息处理等领域非常有效。Intel处理器实现的MMXTM、SSE(Streaming SIMD Extensions)、SSE2及SSE3扩展指令集,都能在单个时钟周期内处理多个数据单元。也就是说我们现在用的单核计算机基本上都属于SIMD机器
多指令流单数据流(MISD) 控制部分:多个
处理器:一个
主存模块:多个
被证明不可能,至少是不实际 目前没有,有文献称流水线计算机为此类 MISD是采用多个指令流来处理单个数据流。由于实际情况中,采用多指令流处理多数据流才是更有效的方法,因此MISD只是作为理论模型出现,没有投入到实际应用之中
多指令流多数据流(MIMD) 控制部分:多个
处理器:多个
主存模块:多个
能够实现作业、任务、指令等各级全面并行 多处理机系统
多核计算机
MIMD机器可以同时执行多个指令流,这些指令流分别对不同数据流进行操作。最新的多核计算平台就属于MIMD的范畴,例如Intel和AMD的双核处理器等都属于MIMD

CISC与RISC

CISC是复杂指令系统计算机,RISC是精简指令系统计算机

RISC有下列特点

指令系统中只包含使用频率较高但不复杂的指令

指令长度固定,指令格式少,寻址方式少

只有存取数指令访问主存,其他指令都在寄存器之间运算

大部分指令在一个机器周期内完成,采用流水技术

CPU中增加了通用寄存器的数量

硬联逻辑控制,不用微程序控制技术

采用优化的编译,以有效地支持高级语言

流水线技术

  • 基本概念
    • 流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各个部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度
    • 流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就像工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即取指令、译码、执行、写回结果,浮点流水又分为八级流水
    • 流水线釆用异步控制并不会给流水线性能带来改善,反而会增加控制电路的复杂性
  • 周期及执行时间计算
    • 流水线周期是执行时间最长的一段,即取指、分析、执行三个里面时间最长的
    • 流水线计算公式:1条指令执行时间+(所求指令条数-1)×流水线周期
      • 理论公式:(取值时间+分析时间+执行时间)+(所求指令条数-1)×流水线周期
      • 实际公式:(一条指令分多少部分×流水线周期)+(所求指令条数-1)×流水线周期
        考试时,先用理论公式,如果没有正确答案,再使用实际公式
  • 吞吐率计算
    • 流水线吞吐率(TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量
    • TP=指令条数/流水线执行时间
    • 流水线最大吞吐率:TP_{max}=\lim_{n\rightarrow \propto}\frac{n}{(k+n-1)}=\frac{1}{\Delta t},Δt是流水线周期
  • 加速比计算
    • 流水线加速比是在完成同样任务,不使用流水线所用的时间与使用流水线所用的时间之比
    • 加速比S=不使用流水线执行时间/使用流水线执行时间
  • 效率
    • 流水线效率是指流水线的设备利用率
    • 流水线效率E=n个任务占有时空区/K个流水段的总时空区
    • E=吞吐率×周期

存储系统

主存储器

  • 存取周期:连续两次访问同一个存储单元的最小间隔时间
  • 主存容量:由指令寻址方式产出的操作数有效地址的位数决定。
  • 分类
    随机读写存储器(RAM)

    动态随机存储器DRAM采用动态MOS电路,需要定时刷新保存当前信息。(单管MOS电路集成度高、功耗小,是当前RAM的主流型号)

    静态随机存储器SRAM不需要刷新,速度快,但线路复杂,集成度低,写入数据后只要不断电,即可长久保持数据不变

    只读存储器(RPM)

    掩模ROM出厂时厂家已经把ROM制好,用户不能改动

    可编程只读存储器PROM,用户只能编程一次写入所需的数据,以后不能再改动

    可擦除可编程EPROM,用紫外线照射15分钟擦除,再用高压电路写入新内容。(EEPROM带电可擦写可编程只读存储器,使用比EPROM方便)

    FM为FlashM,又叫闪存,为快速联机可改写只读存储器,但擦除时只能成块地擦去。

高速缓存Cache

  • 地址映像方式
    • 直接映像:主存按Cache的大小分成区,每个区的块数和Cache总块数相同,块号相同的映像到Cache中同一个块号那里(多个区中的同号块映像到Cache同号块上)
    • 全相联映像:主存的块调入Cache不受限制(任意位置),块冲突最小
    • 组相联映像:介于全相联和组相联之间
  • 替换算法
    • 随机替换算法 RAND:随机的
    • 先进先出 FIFO : 总是把最先调用的Cache替换出去
    • 最近最少使用 LRU:把当前近期Cache使用次数最少的那块替换出去(先看访问,再看修改状态)
    • 优化替换算法:先执行一次程序统计Cache使用情况,第二次执行程序再选择最优的算法来替换

存储器

  • 相联存储器:一种按存储内容来存储和访问的存储器,不属于按寻址方式划分的

寻址方式

  • 立即寻址:直接指出操作数本身
  • 直接寻址:操作数地址
  • 间接寻址:操作数地址的主存单元的地址,简称操作数地址的地址。
  • 寄存器寻址:通用寄存器的编号Ri,这个指定的寄存器中存放着操作数

磁盘

  • 磁盘存储器:由盘片,驱动器,控制器和接口组成。其存储容量有两种指标:格式化容量和非格式化容量
    • 非格式化容量 = 面数(磁道数/面)内圆周长*最大位密度
    • 格式化容量 = 面数 (磁道数/面)(扇区数/道)*(字节数/扇区)
  • 读记录
    • 处理记录时间=读记录的时间+处理时间
    • 总时间=总记录数×(读记录+处理记录)
  • 读取磁盘数据
    • 找磁道的时间。
    • 找块(扇区)的时间,即旋转延迟时间
    • 传输时间
    • 读取磁盘数据=总数据块×(找磁道的时间+找扇区的时间+传输时间)

总线系统

  • 内部总线: 用于芯片一级的互联,分为芯片内总线和元件级总线
    • 芯片内总线用在集成多芯片
    • 元件级总线用于一块电路板内元器件的连接
  • 系统总线:插件板一级的互联,用于构成计算机各组成部分(CPU,内存,接口)
    • 数据总线:传送数据信息,CPU一次传输的数据与数据总线带宽相等
    • 地址总线:传送控制信号和时序信号,如读/写、片选、中断响应信号等
    • 控制总线:传送地址,它决定了系统的寻址空间
    • PC总线、ISA总线、EISA总线、PCI总线等都属于系统总线
  • 外部总线:又称通信总线,用于设备一级的互联,通过该总线与其他设备进行信息与
  • 总线复用,顾名思义就是一条总线实现多种功能。采用这种方式的目的是减少总线数量,提高总线的利用率

可靠性

  • 串联系统
    • 可靠性:R=R_{1}\times R_{2}\times ...\times R_{n}
    • 失效率:\lambda =\lambda _{1}+\lambda _{2}+...+\lambda _{n}
  • 并联系统
    • 可靠性:R=1-(1-R_{1})\times (1-R_{2})\times ...\times (1-R_{n})
    • 失效率:R=(1-R_{1})\times (1-R_{2})\times ...\times (1-R_{n})
  • 模冗余系统
    【软件设计师】计算机组成原理与体系结构_第1张图片
  • 混合系统
    【软件设计师】计算机组成原理与体系结构_第2张图片
  • 冗余技术:是容错技术的基础,通过冗余资源的加入,可以使系统的可靠性得到较大的提高
    • 结构冗余:常用的冗余技术,按其工作方式,可分为静态冗余、动态冗余和混合冗余三种
      • 静态冗余:又称为屏蔽冗余或被动冗余,常用的有三模冗余和多模冗余。静态冗余通过表决和比较来屏蔽系统中出现的错误
      • 动态冗余:又称为主动冗余,它是通过故障检测、故障定位及故障恢复等手段达到容错的目的。其主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来顶替它并重新运行
      • 混合冗余:将静态冗余和动态冗余结合起来,且取二者之长处。它先使用静态冗余中的故障屏蔽技术,使系统免受某些可以被屏蔽的故障的影响。而对那些无法屏蔽的故障则采用主动冗余中的故障检测、故障定位和故障恢复等技术,并且对系统可以作重新配置。(效果好,开销大,成本高)
    • 信息冗余:在实现正常功能所需要的信息外,再添加一些信息,以保证运行结果的正确性
    • 时间冗余:以时间(即降低系统运行速度)为代价以减少硬件冗余和信息冗余的开销来达到提高可靠性的目的
    • 冗余附加技术:是指为实现上述冗余技术所需的资源和技术,包括程序、指令、数据,以及存放和调用它们的空间等
      • 冗余备份程序的存储及调用
      • 实现错误检测和错误恢复的程序
      • 实现容错软件所需的固化程序

你可能感兴趣的:(软考,【软考】软件设计师)