• 软件设计师:01-计算机组成原理与体系结构



    一、数据的表示

    1.1、进制的转换

    1、R进制转十进制

    在这里插入图片描述
    在这里插入图片描述


    2、十进制转R进制

    在这里插入图片描述
    在这里插入图片描述


    3、二进制转八进制与十六进制

    在这里插入图片描述

    • 每三个二进制位对应一个八进制位
    • 对于二进制数 10001110,从低位开始三位三位的看
      • 二进制的 110 对应八进制的6
      • 二进制的 001 对应八进制的1
      • 二进制的 10 补零为 010对应八进制的2
    • 所以该二进制数10 001 110就对应八进制数216。

    4、二进制转十六进制

    在这里插入图片描述

    • 每四个二进制位对应一个十六进制位,对于二进制数10001110
    • 从低位开始四位四位的看
      • 二进制的 1110 对应十六进制的 14,也就是 E
      • 二进制的 1000 对应十六进制的 8
      • 如果不满四位,与转八进制一样,在最前面补0
    • 在十六进制中,A=10,B=11,C=12,D=13,E=14,F=15(大于10的时候就不好用单个表示)

    1.2、原码反码补码移码

    在这里插入图片描述

    原码的左边第一位为符号位(正数为0,负数为1),其余位表示数值(真值绝对值的2进制数)。

    • 反码:正数的反码与原码一样;负数的反码是原码的符号位不变,其余位按位取反。
    • 补码:正数的补码与原码一样;负数的补码是原码的符号位不变,其余位按位取反,并在末尾加1,若溢出则重置为 00000000,如 11111111 + 1 后溢出
    • 移码:正负数的移码都是将符号位颠倒,其余不动

    在上面的图表中,如果我们用原码进行1+(-1)的计算,会得到 1000 0010 这样的二进制数,此时的结果为-2那么我们每个人都知道1+(-1)=0,所以原码表示的这种方式,是不能在机器中做直接的计算的(用补码计算)


    取值范围

    -整数实际值
    原码-2n-1 -1 ~ 2n-1 -1-127~127
    反码-2n-1 -1 ~ 2n-1 -1-127~127
    补码-2n-1 ~ 2n-1 -1-128~127

    可以看到补码的取值范围比原码和反码都要多一个

    • +0的补码是:0000 0000
    • -0的反码是1111 1111,其反码加1后就是溢出一个进位后为补码,仍然是0000 0000.

    所以补码的取值范围就要多一个,也就是 00000000 既要对应 +0 ,也要对应一个 -0


    1.3、浮点数运算

    在这里插入图片描述

    • 先进行对阶(小阶向大阶看齐),之后对尾数进行计算,最后是舍入处理,结果规格化
    • 同时还要记住一点:尾数右移,阶码加1;尾数左移,阶码减1。
    • 浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定

    1.0*10^3 + 1.19*10^2 先将小阶尾数右移转为大阶 0.119*10^3,最后相加结果为 1.119*10^3


    二、计算机结构

    在这里插入图片描述

    计算机的主机中包含两大部件:CPU和内存(主存储器)。而对于声卡、显卡、鼠标键盘这些都是属于外设的。

    对于CPU,我们需要了解的就是运算器和控制器,以及这两者中的一些寄存器。


    运算器

    • 算术逻辑单元 ALU:它是运算器的重要组成部件,负责处理数据,实现对数据的算术运算和逻辑运算。
    • 累加寄存器 AC:通常简称累加器,它是一个通用寄存器,功能是当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。
    • 数据缓冲寄存器 DR:作为CPU和内存、外设之间数据传送的中转站,作为CPU和内存、外设之间在操作速度上的缓冲。
    • 状态条件寄存器 PSW:保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容。

    控制器:

    • 程序计数器 PC:用于存放下一条指令的地址。当一条指令被获取后,程序计数器的地址加1,指向下一条指令的地址。
    • 指令寄存器 IR:用于存放当前从主存储器读出的正在执行的一条指令。
    • 指令译码器 ID:计算机执行一条指令时,首先分析这条指令的操作码是什么,以决定操作的性质和方法,然后才能控制计算机其他各部件协同完成指令表达的功能,这个分析工作由指令译码器来完成。
    • 地址寄存器 AR:用于保存当前CPU所访问的内存单元的地址。

    三、Flynn分类法

    在这里插入图片描述

    Flynn分类法中主要有两个指标:一个是指令流,一个是数据流。指令流为机器执行的指令序列;数据流是由指令调用的数据序列。无论是指令流还是数据流,它们都分为两种类型:单、多。

    主要考察 阵列处理机,适合处理数组类型的运算,例如都是加法指令,只需要输入数据就可以得到对应的结果


    四、CISC与RISC

    在这里插入图片描述

    CISC是老式计算机使用的指令系统,需要适配多种指令,所以指令为可变长格式,且因为指令数量多需要使用多种寻址方式进行发送指令,速度较慢,且研制周期长

    CISC:Complex Instruction Set Computer(复杂指令集计算机)
    RISC:Reduced Instruction Set Computer(精简指令集计算机)

    在这里插入图片描述


    五、流水线

    5.1、基本概念

    在这里插入图片描述


    5.2、流水线计算

    在这里插入图片描述

    1、 流水线周期:所有阶段中耗时最长的一段,本题为 2ns

    2、100条指令全部执行完毕需要的时间为:

    • 理论公式:(2+2+1)+(100-1)*2=203ns(后续每经历一次周期生产一件商品)
    • 实践公式:(3+100-1)*2=204ns(公式中的k表示指令被分成了几段,这里切成三段)

    5.3、流水线吞吐率计算

    在这里插入图片描述
    在这个公式中,指令条数为100,流水线执行时间为203ns,所以流水线的吞吐率TP=100/203

    而流水线最大吞吐率是一种理想情况,即TPmax=1/2。(Δt=流水线周期=2ns)


    5.4、流水线加速比计算

    在这里插入图片描述

    不使用流水线采用顺序执行的方法,所花费的时间为:(2+2+1)*100=500ns
    使用流水线的方法,所花费的时间为:(2+2+1)+(100-1)*2=203ns
    流水线的加速比:S=500/203


    5.5、流水线的效率

    在这里插入图片描述
    此处的流水线效率为 (t+t+t+3t)*4 / 15t*4


    六、层次化存储结构

    6.1、层次结构

    在这里插入图片描述

    • 存储速度最快、效率最高的就是寄存器,它位于CPU中,在CPU中,拥有运算器和控制器,而在运算器和控制器中,就会存在相应的寄存器。而寄存器的容量是极小的,但是速度非常快。
    • 速度排在第二的是Cache(高速缓存),之后依次是内存(主存)、外存(辅存)。
    • 对于Cache而言,它内部的所有内容都来自于内存,它所存储的内容是内存中的一小部分,但是运行速度却比内存快的多

    6.2、存储器的分类

    1、按位置

    • 内存:也称为主存,设在主机内或主板上,用来存放机器当前运行所需要的程序和数据,以便向CPU提供信息。相对于外存,其特点是容量小、速度快。

    • 外存:也称为辅存,如磁盘、磁带、光盘和U盘等,用来存放当前不参加运行的大量信息,而在需要时调入内存。


    2、按材料

    • 磁存储器:用磁介质做成,如磁芯、磁泡、磁膜、磁鼓、磁带及磁盘等。
    • 半导体存储器:根据所用元件可分为:双极型和MOS型;根据数据是否需要刷新可分为:静态和动态。
    • 光存储器:利用光学方法读/写数据的存储器,如光盘。

    3、按工作方式

    • 读/写存储器(RAM):既能读取数据也能存入数据的存储器。
    • 只读存储器:工作过程中仅能读取的存储器,根据数据的写入方式又可分为:ROM、PROM、EPROM、EEPROM等。
    • 固定只读存储器(ROM):这种存储器是在厂家生产时就写好数据的,其内容只能读出,不能改变。一般用于存放系统程序BIOS和用于微程序控制。
    • 可编程的只读存储器(PROM):其中的内容可以由用户一次性写入,写入后不能再修改。
    • 可擦除可编程的只读存储器(EPROM):其中的内容既可以读出,也可以由用户写入,写入后还可以修改。
    • 电擦除可编程的只读存储器(EEPROM):与EPROM相似,既可以读出,也可以写入,只不过这种存储器采用电擦除的方式进行数据的改写。
    • 闪速存储器(FM):简称闪存,其特性介于EPROM和EEPROM之间,类似于EEPROM。

    4、按访问方式

    • 按地址访问的存储器
    • 按内容访问的存储器:相联存储器

    5、按寻址方式分类

    • 随机存储器(RAM):这种存储器可对任何存储单元存入或读取数据,访问任何一个存储单元所需的时间是相同的。
    • 顺序存储器(SAM):访问数据所需要的时间与数据所在的存储位置相关,磁带是典型的顺序存储器。
    • 直接存储器(DAM):介于随机存取和顺序存取之间的一种寻址方式。磁盘是一种直接存储器。

    6.3、Cache

    在这里插入图片描述

    正常Cache的访问命中率都在90%以上,由上述公式可以看出Cache的高速存储速率极快

    高速缓存中的地址映像方法:直接映像、全相联映像、组相联映像

    • 直接映像:指主存的块与Cache块的对应关系是固定的。优点是地址变换简单,缺点是灵活性差、Cache块冲突率高。
    • 全相联映像:允许主存的任一块可以调入Cache存储器的任何一个块的空间中。优点是Cache块冲突率低、灵活性好,缺点是访问速度慢、地址变换较复杂、成本太高。
    • 组相联映像:是前两种方式的折衷方案,即组采用直接映像方式、块采用全相联映像方式。

    6.4、主存的分类

    在这里插入图片描述

    主存可分为:随机存取存储器(RAM)和只读存储器(ROM)
    对于这两种类型,一个明显的区别是:

    • 内存是属于RAM的,一旦断电之后,内存中的所有数据都将被清除掉,无法进行保存
    • ROM在断电之后,仍然可以存储信息内容。

    6.5、主存的编制

    在这里插入图片描述

    第一空:内存地址从AC000H到C7FFFH,共有多少K个地址单元,那么对这两个十六进制数进行相减、再加1即可(比如地址是2-4,那么地址单元为4-2+1=3

    • 第五位:F-0=F
    • 第四位:F-0=F
    • 第三位:F-0=F
    • 第二位:7-C,因为C=12,不够减,所以向高位借一位,此时第二位应该是:7+16-C=B(十六进制,所以每借一位加16)
    • 第一位:被借了一位,C-1=B,B-A=1
    • 所得结果是:1BFFFH,再加1,即:1C000H(将其转换成K单位,要对结果除以1024)
    • 将其转为十进制:(C×16^3 + 1×16^4) /1024=112K。

    第二空:总容量为112K×16bit,需要28片存储器芯片,每片芯片有16K个存储单元,问该芯片每个存储单元存储多少位?

    也就是说:(112K×16bit)/(28×16K)= a ,比值为1是因为我们使用这些芯片组成固定的空间,16和16约掉,K和K约掉,所以112/28a=1,即解得a=4


    八、局部性原理

    在这里插入图片描述

    时间局部性:指如果程序中的某条指令一旦被执行,则不久的将来该指令可能再次被执行。

    空间局部性:指一旦程序访问了某个存储单元,则在不久的将来,其附近的存储单元也最有可能被访问。


    九、磁盘结构与参数

    在这里插入图片描述

    直接上题目:

    在这里插入图片描述

    我们来看上面这道例题,磁盘的旋转周期为33ms,表示旋转一圈耗时33ms,一共有11个记录,可以理解为读取1个记录消耗的时间为3ms。

    在这里插入图片描述

    若采用单缓冲区顺序处理(如上图中的大圈)

    • 当我们把R0读取单缓冲区时,此时磁头跑到了R1的起始位置,但是此时是不能读取R1的,因为R0占用着缓冲区(还未处理完),所以新的记录是进不来的
    • 当我们处理完缓冲区中的R0之后,花费了3ms,此时磁头已经跑到了R2的起始位置,但是我们接下来想要处理的应该是R1,所以这个时候磁头会一直转动,直到转过一圈,再次跑到R1的起始位置时,才可以处理R1
    • 所以我们处理一个记录R0,一共耗时为:一个记录+一圈,也就是3+33=36ms
    • 从R0到R9都是同样的道理,所以共耗时:36*10=360ms
    • 而对于R10,我们就可以直接读取并处理,耗时为6ms,所以总共耗时为360+6=366ms。

    若对信息存储进行优化分布(如上图中的小圈)

    • 先看大圈,我们处理R0的时候,磁头跑到了R2,此时我们将R2假设为R1
    • 而处理完R1之后,磁头跑到了R4,此时我们将R4假设为R2,以此类推,就得到了上图中的小圈
    • 这样下来,就没有任何的时间浪费,那么读取和处理分别耗时3ms,也就是处理完一个记录耗时3+3=6ms,一共11个记录,总共耗时6*11=66ms

    十、计算机总线

    在这里插入图片描述

    微机中的总线分为数据总线、地址总线、控制总线。

    • 数据总线(DB):用来传送数据信息,是双向的。CPU既可以通过DB从内存或输入设备读入数据,也可以通过DB将内部数据送至内存或输出设备。DB的宽度决定了CPU和计算机其他设备之间每次交换数据的位数。

    • 地址总线(AB):用于传送CPU发出的地址信息,是单向的。传送地址总线的目的是指明与CPU交换信息的内存单元或I/O设备,地址总线的宽度决定了CPU的最大寻址能力。

    • 控制总线(CB):用来传送控制信号、时序信号和状态信息等,双向线表示。其中有的信号是CPU向内存或外部设备发出的信息,有的信号是内存或外部设备向CPU发出的信息。CB中的每一条线的信息传送方向是单方向且确定的,但CB作为一个整体则是双向的。


    例题

    在计算机系统中釆用总线结构,便于实现系统的积木化构造,同时可以(减少信息传输线的数量)

    解析:总线是连接计算机有关部件的一组信号线,是计算机中用来传送信息代码的公共通道。釆用总线结构主要有以下优点:简化系统结构,便于系统设计制造;大大减少了连线数目,便于布线,减小体积,提髙系统的可靠性;便于接口设计,所有与总线连接的设备均釆用类似的接口;便于系统的扩充、更新与灵活配置,易于实现系统的模块化; 便于设备的软件设计,所有接口的软件就是对不同的口地址进行操作;便于故障诊断和维修,同时也降低了成本


    十一、系统可靠性分析

    1、串联系统的可靠性(R)与失效率(λ)

    在这里插入图片描述

    2、并联系统的可靠性(R)与失效率(μ)

    在这里插入图片描述

    3、案例

    在这里插入图片描述


    十二、校验码

    12.1、简介

    在这里插入图片描述


    12.2、循环校验码CRC

    模2除法:直接借数前位无需减少

    在这里插入图片描述

    直接上例题

    在这里插入图片描述


    12.3、海明校验码

    海明码的构成方法是在数据位之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错(可以检错和纠错)。

    设数据位是n位,校验位是k位,则n和k必须满足:2^k - 1 ≥ n + k。

    在这里插入图片描述

    对于信息1011的海明码,我们要确定校验位,此时数据位为n=4,首先采用公式 2^k - 1 ≥ n + k,解得校验位k=3,分别存放在:2^0=12^1=22^2=4这三个位置。而剩下空出来的位置则对应补上数据位,即:第三位为I1,第五位为I2,第六位为I3,第七位为I4。(如果校验位更多,则第八位为r3:2^3=8)

    因为I4占据第七位:7=2^2+2^1+2^0;I3占据第六位:6=2^2+2^1;I2占据第五位:5=2^2+2^0;I1占据第三位:3=2^1+2^0。我们找出这几个式子中指数的规律:

    校验位r2对应2^2,而7、6、5分别包含2^2,这三位分别对应数据位I4、I3、I2,则:r2=I4 异或 I3 异或 I2,而数据位I4=1,I3=0,I2=1,得异或结果为r2=0。

    校验位r1对应2^1,而7、6、3分别包含2^1,这三位分别对应数据位I4、I3、I1,则:r1=I4 异或 I3 异或 I1,而数据位I4=1,I3=0,I1=1,得异或结果为r1=0。

    校验位r0对应2^0,而7、5、3分别包含2^0,这三位分别对应数据位I4、I2、I1,则:r0=I4 异或 I2 异或 I1,而数据位I4=1,I2=1,I1=1,得异或结果为r0=1。

    所得最终的结果为:I4=1,I3=0,I2=1,r2=0,I1=1,r1=0,r0=1,收到的信息为:1010101


    • 0异或任何数=任何数
    • 1异或任何数-任何数取反
    • 任何数异或自己=把自己置0
  • 相关阅读:
    二叉树层级遍历(深度优先、广度优先算法)
    10.4作业
    Carla学习笔记(二)服务器跑carla,本地运行carla-ros-bridge并用rviz显示
    Linux 下 USB 端口和设备的绑定
    国内的PMP证书含金量到底如何
    kcp简析
    显示控件——滑动选择
    SpringBoot 整合 Redis 全面教程:从配置到使用
    0基础,跟我一起学python---基础篇
    Spring中常见的参数解析器
  • 原文地址:https://blog.csdn.net/apple_53947466/article/details/125557473