计算机硬件基础

数据的表示

  • 进制转换
  • 原码、反码、补码、移码
    • 将最高位用做符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值的表示形式。
    • 反码:正数的反码与原码相同。负数的反码符号位为1,其余各位为该数绝对值的原码按位取反。
    • 补码:正数的补码与原码相同。负数的补码是该数的反码加1。
    • 移码:移码是对补码的符号位取反得到的一种编码。移码只用于表示浮点数的阶码(即某个小数的乘10的几次幂),因此只用于整数 。
    • 浮点数的运算主要有三个步骤:对阶、尾数计数、结果格式化。

计算机系统的组成与体系结构

  • 计算机体系结构分类有多种方式,其中最为常见的是:Flynn分类法冯氏分类法。Flynn分类法是根据指令流、数据流和多倍性三方面来进行分类的,如表1-3所示:
    软件设计-基础解析01
  • 计算机硬件系统运算器控制器存储器输入设备输出设备五大部件组成。
    • 其中运算器和控制器组成中央处理器(CPU)。运算器负责完成算术、逻辑运算功能,通常由ALU(算术逻辑单元)、寄存器、多路转换器、数据总线组成;
    • 控制器则负责依次访问程序指令,进行指令译码,并协调其他设备,通常由程序计数器(PC)、指令寄存器、指令译码器、状态/条件寄存器、时序发生器、微操作信号发生器组成。
  • 指令的基本格式是由操作码地址码两个部分组成的。
    • 操作码指出该指令要完成什么操作,地址码则是提供原始的数据。指令系统中定义操作码的方式可以分为规整型(定长编码)和非规整型(变长编码)两种,如表1-4所示:
      软件设计-基础解析01
  • 指令系统中用来确定如何提供操作数或提供操作数地址的方式称为寻址方式和编址方式;
  • 操作数可以采用以下几种寻址方式:
    1. 隐含寻址方式
    2. 立即寻址方式
    3. 直接寻址方式
    4. 间接寻址方式
    5. 寄存器寻址方式和寄存器间接寻址方式
    6. 相对寻址方式
    7. 基址寻址方式
    8. 变址寻址方式
  • 复杂指令计算机(CISC)与精简指令计算机(RISC)
    软件设计-基础解析01
  • 流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。
    • 计算流水线执行时间:
      • 假定有某种类型的任务,共可分成N个子任务,执行每个子任务需要时间t,则完成该任务所需的时间即为Nt。若以传统的方式,则完成k个任务所需的时间是kNt;而使用流水线技术执行,花费的时间是Nt+(k-1)t。也就是说,除了第一个任务需要完整的时间外,其他都通过并行,节省下了大量的时间,只需一个子任务的单位时间就够了。另外要注意的是,如果每个子任务所需的时间不同,则其速度取决于其执行顺序中最慢的那个(也就是流水线周期值等于最慢的那个指令周期),要根据实际情况进行调整。 例如:若指令流水线把一条指令分为取指、分析和执行三部分,且三部分的时间分别是取指2ns,分析2ns,执行1ns.那么,最长的是2ns,因此100条指令全部执行完毕需要的时间就是:(2ns+2ns+1ns) +(100-1)x 2ns=203ns.
        软件设计-基础解析01
      • 流水线的吞吐率 = 任务数 / 完成时间;
      • 加速比= 不采用流水线的执行时间 / 采用流水线的执行时间;
    • 分析影响流水线的因素:
      1. 转移指令:无条件跳转指令是不会影响流水线;
      2. 共享资源访问的冲突:后一条指令需要使用的数据,与前一条指令发生的冲突,或者相邻的指令使用了相同的寄存器;
      3. 响应中断:当有中断请求时,流水线也会停止。对于这种情况有两种响应方式,一种是立即停止–精确断点法,能够立即响应中断;另一种是流水线中的指令继续执行,不再新增指令到流水线–不精确断点法

存储系统

  • 存储系统
    • Cache原理、命中率、失效率
      • 如果Cache的访问命中率为h(通常1-h就是Cache的失效率),而Cache的访问周期时间是t1主存储器的访问周期时间是t2,则整个系统的平均访存时间就应该是:t3=ht1 +(1-h) t2。从公式可以看出,系统的平均访存时间与命中率有着很密切的关系。应用这个公式,可以计算出所有情况下的平均访存时间。
        • 例如:设某流水线计算机主存的读/写时间为100ns,有一个指令和数据合一的Cache,已知该Cache的读/写时间为10ns,取指令的命中率为98%,取数的命中率为95%.在执行某类程序时,约有1/5指令需要存/取一个操作数。假设指令流水线在任何时候都不阻塞,则设置Cache后,每条指令的平均访存时间约为多少?其实这是应用该公式的简单数学题:(2% * 100ns + 98% * 10ns)+ 1/5 x(5% * 100ns + 95% * 10ns)=14.7ns
    • Cache存储器的映射机制
      • CPU发生访存请求时,会先让Cache判断是否包括,如果命中(即包括请求的内容)就直接使用。这个判断的过程就是Cache地址映射,这个速度应该尽可能快,常见的映射方法有直接映射全相联映射组相联映射三种。
    • Cache淘汰算法: 随机淘汰先进先出(FIFO)淘汰(淘汰最早调入Cache的数据)、最近最少使用(LRU)淘汰法。其中平均命中率最高的是LRU算法
    • Cache存储器的写操作:在使用Cache时,需要保证其数据与主存一致,因此在写Cache时就需要考虑与主存间的同步问题,通常使用以下三种方法:写直达(写Cache时,同时写主存)、写回(写Cache时不马上写主存,而是等其淘汰时回写)、标记法
    • 主存储器的种类:
      1. RAM:随机存储器,可读写,断电后数据无法保存,只能暂存数据。
      2. SRAM:静态随机存储器,在不断电时信息能够一直保持。
      3. DRAM:动态随机存储器,需要定时刷新以维持信息不丢失。
      4. ROM:只读存储器,出厂前用掩膜技术写入,常用于存放BIOS和微程序控制。
      5. PROM:可编程ROM,只能够一次写入,需用特殊电子设备进行写入。
      6. EPROM:可擦除的PROM,用紫外线照射15~20分钟可擦去所有信息,可写入多次。
      7. E2PROM:电可擦除ERPOM,可以写入,但速度慢。
      8. 闪速存储器:现在U盘使用的种类,可以快速写入。
    • 实际的存储器总是由一片或多片存储器配以控制电路构成的。其容量为WxB,W是存储单元(word,即字)的数量,B表示每个word由多少bit(位)组成。
    • 主存储器的地址编码:
      • 主存储器(内存)采用的是随机存取方式,需对每个数据块进行编码,而在主存储器中数据块是以word来标识的,即每个字一个地址,通常采用的是16进制表示。

可靠性与系统性能评测

  • 可靠性计算:
    1. 串级系统:如图1-7所示, 设系统各个子系统的可靠性分别用Rn表示,则系统的可靠性:R = R1 * R2 * R3 * … * Rn;系统的失效率:X = X1 * X2 * X3 * … * Xn;
      软件设计-基础解析01
    2. 并联系统:如图1-8所示,设系统各个子系统的可靠性分别用Rn表示,则系统的可靠性:R = 1 - (1-R1) * (1-R2) * (1-R3) * … * (1-Rn);
      软件设计-基础解析01
      假如所有子系统的失效率均为l,则系统的失效率为u:
      软件设计-基础解析01
    3. 模冗余系统:如图1-9所示, m模冗余系统由m个(m=2n+1为奇数)相同的子系统和一个表决器组成,经过表决器表决后,m个子系统中占多数相同结果的输出可作为系统的输出。
      软件设计-基础解析01
    4. m个子系统中,只有n+1个或n+1个以上的子系统能正常工作,系统就能正常工作并输出正确结果。假设表决器是完全可靠的,每个子系统的可靠性为R0,则m模冗余系统的可靠性为:
      软件设计-基础解析01
  • 系统性能评价
    • 常用方法:
      1. 时钟频率:即主频(常听到的CPU主频1.8GHz等),通常主频越高,速度越快。只对相同体系结构的机器,对于异构系统难有保证性;
      2. 指令执行速度:在早期,我们经常使用每秒执行的加法指令(由于当时各种指令的速度大致相同或等比例)总数来作为衡量其性能的重要指标,其单位为KIPS(每秒千条指令)、MIPS(每秒百万条指令);
      3. 等效指令法:随着计算机指令系统的发展,使用单种指令的MIPS值的局限性日益暴露,后来就出现了改进的吉普森混合指令速度法。它通过统计各类指令在程序中所占的比例,进行折算。
      4. 数据处理速率(PDR)法:它采用固定的比例法来计算数据处理的速度,而且还仅对CPU和主存的速度进行度量,因此有很大的局限性。
      5. 核心程序法:把应用程序中用得最频繁的那部分核心程序作为评价计算机性能的标准程序,在不同机器上运行,测其执行时间,作为各类机器性能评价的依据。
    • 基准测试程序:
      1. 整数测试程序:Dhrystone是一个用来测试编译器和CPU处理整数指令和控制功能有效性的基准测试程序。
      2. 浮点测试程序:在计算机科学和工程应用领域,浮点计算工作量占很大比例,因此有许多此类基准测试程序。
      3. 理论峰值浮点速度:MELOPS,与处理器时钟周期、并行流水线功能部件数相关,是直接计算出来的理论值。
      4. Linpack基准测试程序:主要测试向量性能和高速缓存性能。
      5. Whetstone基准测试程序:综合性测试程序,除测试浮点操作外,还测试整数计算和功能调用等性能。
      6. SPEC基准程序:是由几十家世界知名计算机大厂商支持的非盈利的合作组织,开发共同认可的标准基准程序。
      7. TPC基准程序:是事务处理委员会编写的,共包括TPC-A,TPC-B,TPC-C,TPC-D和TPC-E五种,每一种都有一定的适用范围。
    • 校验码:
      • 海明校验码:对于信息位为m的原始数据,需加入k位的校验码,信息位数和校验位数的关系满足2^k>=m+k+1
        • 海明校验码是放置在2的幂次位上的,即"1、2、4、8、16、32……"。即该位置上只能放校验码不能放信息码;
        • 校验码的计算:(参考链接:https://www.bilibili.com/video/av19665344/?p=22)
          软件设计-基础解析01
        • 从校验码的特性可以得出信息码的填写位置,因此将信息码所在的位数进行二进制等式的转换,求对应位数的校验码则观察信息码中对应的2的次幂的信息码的异或值。如求r2时,观察7、6、5、3中的二进制等式,带有22的则符合,取出第7位、6位、5位的信息码分别为1、0、1进行异或,得出r2=0;求r1则观察21的信息码有第7位、6位、3位,取出1、0、1异或得出r1=0;求r0则取出第7位、5位、3位的信息码1、1、1得出r1=1;
        • 校验码的纠错:将收到的数据进行数据重新进行一次校验码的推算得出新校验码,与接收到的校验码进行异或操作,得出的结果为具体某一位的数据出错,将其数据取反即可。如:假设数据发送出错,将1010101发送成为1010100,很明显第1位出错,这时我们自行从信息码中推算出新的校验码001,与接收到的校验码000进行异或操作,得出结果为001,说明第1位数据出错,进行取反即可纠正错误。如果异或得出的结果为010,说明第2位出错;如果是110,说明第6位出错……以此类推。
      • CRC校验码:只能检错,不能纠错
        • 模2除法:普通除法是按照普通的计算方法进行计算,而模2除法则是与除数相同位数的数,进行判断大小取值,然后将得出的结果进行异或操作。如10111除以110,首先取值1,得出110,101与110进行异或操作得出011,再取一位数得到0111,再取值1得出110,进行0111与110异或操作得到001,再取一位数得到0011,由于有效位数只有2位,故而取值0。
          软件设计-基础解析01
        • 举例计算:在原始报文后面加上生成多项式的长度N-1个0(相当于补余数的位数),从生成多项式可以推导出被除数为11011(通过x的次幂推导),原始报文末尾补充上相应个数的0后,对被除数进行模2除法,计算得出余数0011,因此得到发送报文为110010101010011。接收方接收到数据后,将数据110010101010011对11011进行模2除法,得到的结果余数应该为0,说明数据正确。
          软件设计-基础解析01

相关文章:

  • 2021-10-05
  • 2022-12-23
  • 2021-11-30
  • 2022-01-11
  • 2021-12-30
  • 2021-06-16
  • 2021-08-01
  • 2021-12-05
猜你喜欢
  • 2021-08-28
  • 2021-06-04
  • 2021-11-30
  • 2021-04-12
  • 2022-03-05
  • 2021-11-30
  • 2021-08-16
相关资源
相似解决方案