[软件设计师笔记]计算机系统基础

发布于 2024-04-12  136 次阅读


计算机硬件组成

计算机的基本硬件系统由运算器、控制器、存储器、输入设备和输出设备五大部件组成。
运算器、控制器等部件被集成在一起统称为中央处理单元(Central Processing Unit,CPU)。CPU是硬件系统的核心,用于数据的加工处理,能够完成各种算术、逻辑运算以及控制功能。
存储器是计算机系统中的记忆设备,分为内部存储器和外部存储器。前者速度高、容量小,一般用于临时存放程序、数据及中间结果。而后者容量大、速度慢,可以长期保存程序和数据。
输入设备和输出设备合称为外部设备(简称外设),输入设备用于输入原始数据和各种命令,而输出设备则用于输出计算机运行的结果。

CPU的功能

  • 程序控制。CPU通过执行指令来控制程序的执行顺序,这是CPU的重要功能。
  • 操作控制。一条指令功能的视线需要若干操作信号配合来完成,CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。
  • 时间控制。CPU对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要严格的控制。
  • 数据处理。CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据的加工处理也是CPU的根本任务。
    此外,CPU还需要对系统内部和外部的中断、异常做出响应,进行相应的处理。

CPU的组成

CPU主要由运算器、控制器、寄存器组(32bit,64bit)和内部总线等部件组成。

运算器

  • 算术逻辑单元ALU:实现对数据的算术和逻辑运算
  • 累加寄存器AC:运算结果或源操作数的存放区
  • 数据缓冲寄存器DR:暂时存放内存的指令或数据
  • 状态条件寄存器PSW:保存指令运行结果的条件码内容,例如溢出标志等

控制器

  • 指令寄存器IR:暂存CPU执行命令
  • 程序计数器PC:存放指令执行地址
  • 地址寄存器AR:保存当前CPU所访问的内存地址
  • 指令译码器ID:分析指令操作码
    CPU依据指令周期的不同阶段来区分二进制的指令和数据,因为在指令周期的不同阶段,指令会命令CPU分别去取指令或者数据。

进制转化

十进制转R进制:十进制整数(除以R倒取余数),用十进制整数除以R,记录每次所得余数,若商不为0,则继续除以R,直至商为0,而后将所有余数从下至上记录,排列成从左到右的顺序,即为转化后的R进制数。

有十进制数200,转换为6进制,此时R=6,将200/6,得商为33,余数为2;因为商不等于0,因此再将商33/6,得商5,余数为3;再将5/6,得商为0,余数为5;此时商为0,将所有余数从下到上记录,得532。

二进制转八进制:每三位二进制数转化为一位八进制数,二进制数位个数不是三的倍数,则在前面补0(原则是数值不变),如二进制数01101有五位,前001=1,101=1+4=5,也即为15

二进制转十六进制:每四位二进制数转化为一位十六进制数,二进制数位个数不是四的倍数,则在前面补0,如二进制数101101有六位,前面补两个0就有八位,为0010 1101,每四位转换为一位十六进制数,0010=2,1101=13=D,也即101101=2D。

数据表示

机器数:各种数值在计算机中的表示形式,特点是使用二进制计数制,数的符号用0和1表示,小数点则隐含,不占位置。
机器数有无符号数和带符号数之分。无符号数表示正数,没有符号位。带符号数最高位为符号位,正数符号位为0,负数符号位为1。

定点表示法分为纯小数和纯整数两种,其中小数点不占存储位,而是按照以下约定:
纯小数:约定小数点的位置在机器数的最高数值位之前
纯整数:约定小数点的位置在机器数的最低数值位之后
真值:机器数对应的实际数值

原码、反码、补码、移码

  • 原码:一个数的正常二进制表示,数值0的原码有两种形式。
  • 反码:正数的反码即原码;负数的反码是在原码的基础上,除符号位外,其他各位按位取反。数值0的补码也有两种形式
  • 补码:正数的补码即原码;负数的补码是在原码的基础上,除符号位外,其他各位按位取反,而后末位+1,若有进位则产生进位。数值0的补码只有一种形式+0。
  • 移码:用于浮点运算的阶码,无论正数负数,都是将该原码的补码的首位(符号位)取反得到移码。

校验码

海明码

海明码的本质也是利用奇偶性来检错和纠错的检测方法,构成方法是在数据位之间的确定位置上插入k个校验位,通过扩大码距来实现检错和纠错。**设数据位是n位,校验位是k位,则n和k必须满足以下关系:2^k-1>=n+k**

求信息1011的海明码
1、校验位的位数和具体的数据位的位数之间的关系
所有位都编号,从最低位编号,从1开始递增,校验位处于2的n(n=0 1 2……)次方中,即处于第1,2,4,8,16,32位上,其余为才能填充真正的数据位,若信息数据为1011,则可知,第1,2,4位为校验位,第3,5,6,7位为数据位,用来从低位开始存放1011,得出信息位和校验位分布如下:

计算校验码
将所有信息位的编号都拆分成二进制表示:

体系结构

体系结构的分类

Flynn分类法

分类有两个因素,指令流和数据流,指令流由控制部分处理,每一个控制部分处理一条指令流,多指令流就有多个控制部分;数据流由处理器来处理,每一个处理器处理一条数据流,多数据流就有多个处理器;至于主存模块,是用来存储的,存储指令流或者数据流。因此,无论是多指令流还是多数据流,都需要多个主存模块来存储,对与主存模块,指令和数据都一样。
依据计算机的特性,是由指令来控制数据的传输,因此,一个条指令可以控制一条或者多条数据流,但一条数据流不能被多条指令控制,否则会出错,就如同上级命令太多还相互冲突,不知道该执行哪个,因此多指令单数据MISD不可能

指令系统

计算机指令的组成:一条指令由操作码和操作数两部分组成,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址
在计算机中,操作要求和操作数地址都由二进制数码表示,分别称为操作码和地址码,整条指令以二进制编码的形式存放在存储器中。
计算机指令执行过程:取指令——分析指令——执行指令三个步骤,首先将程序计数器PC中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR;而后由指令译码器进行分析,分析指令操作码,最后执行指令,取出指令执行所需的源操作数。

指令寻址方式

顺序寻址方式:当执行一段程序时,是一条指令接着一条指令的顺序执行
跳跃寻址方式:指下一条指令的地址码不是由程序计数器给出,而是由本条指令直接给出。 程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址

指令操作数的寻址方式

立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身。
直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址。
间接寻址方式:指令地址码字段所指向的存储单元中存储的是操作数的地址。
寄存器寻址方式:指令中的地址码是寄存器的编号。
基址寻址方式:将基址寄存器的内容加上指令中的形式地址而形成操作数的有效地址,其优点是可以扩大寻址能力。
变址寻址方式:变址寻址方式计算有效地址的方法与基址寻址方式很相似,它是将变址寄存器的内容加上指令中的形式地址而形成操作数的有效地址。

CISC是复杂指令系统,兼容性强,指令繁多,长度可变,由微程序实现
RISC是精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)

指令流水线

指令流水线:将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的不减去处理指令的不同段

RISC中的流水线技术:

  • 超流水线(Super Pipe Line)技术。通过细化流水、增加级数和提高主频,使得在每个机器周期内能完成一个甚至两个浮点操作,实际上是以时间换空间
  • 超标量(Super Scalar)技术。通过内装多条流水线来同时执行多个处理,其时钟频率虽然与一般流水接近,却有更小的CPI。其实质是以空间换时间
  • 超长指令字(Very Long Instruction Word,VLIW)技术。VLIW和超标量都是20世纪80年代出现的概念,其共同点是要同时执行多条指令,其不同点在于超标量依靠硬件来实现并行处理的调度,VLIW则充分发挥软件的作用,而使硬件简化,性能提高。

流水线时间计算(考点)

流水线周期:指令分成不同执行阶段,其执行时间最长的段位流水线周期
流水线的执行时间:一条指令总执行时间+(总指令条数-1)*流水线周期
流水线吞吐率计算:吞吐率是单位时间内执行的指令条数,公式:指令条数/流水线执行时间
流水线的加速比计算:加速比即使用流水线后的效率提升度,即比不适用流水线快了多少倍,越高表明流水线效率越高。公式:不使用流水线执行时间/使用流水线执行时间

存储系统

计算机采用分级的存储体系主要是为了解决存储容量、成本和速度之间的矛盾问题。
存储计算速度:CPU内部通用寄存器>Cache>主存储器>联机磁盘存储器>脱机光盘、光盘存储器

两级存储:Cache-主存、主存-辅存(虚拟存储体系)
局部性原理:总的来说,在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内,包括下面两个方面:

  • 时间局部性原理:如果一个数据项正在被访问,那么在近期他可能会被再次访问,即在相邻的时间里会访问同一个数据项。
  • 空间局部性原理:在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,即相邻的空间地址会被连续访问

Cache

高速缓存Cache用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量小,速度为内存的5-10倍,由半导体材料构成。其内容是主存内存的副本拷贝,对于程序员来说是透明的。
Cache用控制部分和存储器组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换
地址映射:在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换为Cache存储器地址,这种地址的转换成为地址映像,由硬件自动完成映射,分为下列三种方法:

直接映像

将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中的块的对应关系式固定的,也即二者块号相同才能命中,地址变换简单但不灵活,容易造成资源浪费。

全相联映像

同样都等分成块并编号。主存中任意一块都与Cache中任意一块对应。因此可以随意调入Cache任意位置,但地址变换复杂,速度较慢。因为主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突,是最不容易发生块冲突的映像方式。

组组相连映像

前两种方式的结合,将Cache存储器先分块再分组,主存也同样先分块再分组,组间采用直接映像,即内存中组号与Cache组号相同的组才能命中,但是组内全相连映像,也即组号相同的两个组内的所有块可以任意调换。

cache的替换算法

替换算法的目标就是使Cache获得尽可能高的命中率。常用算法包括:

  • 随机替换算法。就是用随机数发生器产生一个要替换的块号,将该块替换出去
  • 先进先出算法:就是将最先进入Cache的信息块替换出去
  • 近期最少使用算法:这种方法是将近期最少使用的Cache中的信息块替换出去
  • 优化替换算法:这种方法必须先执行一次程序,统计Cache的替换情况,有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换。

命中率及平均时间

Cache有一个命中率的概念,即当CPU所访问的数据在Cache时,命中,直接从Cache中读取数据。设读取一次Cache的时间为1ns,读取一次内存的时间为1000ns,若CPU在多次读取数据过程中,有90%命中Cache,则CPU读取一次的平均时间为(90%*1+10%*1000)ns

磁盘结构和参数

磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存放在一个个扇区中。
磁头首先要寻找到对应的磁道,后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对应的数据,因此,会产生寻道时间和等待时间。公式为:存取时间=寻道时间+等待时间(平均定位时间+转动延迟)
注意:寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。

磁盘调度算法

之前已经说过,磁盘数据的读取时间分为寻道时间+旋转时间,也即先找到对应的磁道,而后再旋转到对应的扇区才能读取数据,其中寻道时间耗时最长,需要重点调度,有如下调度算法:

  • 先来先服务FCFS:根据进程请求访问磁盘的先后顺序进行调度
  • 最短寻道时间优先SSTF:请求访问的磁道与当前磁道最近的进程优先调度,使得每次寻到时间最短。会产生“饥饿”现象,即远处进程可能永远无法访问
  • 扫描算法SCAN(经典调度算法):又称“电梯算法”,磁头在磁盘上双向移动,其会选择离磁头当前所在磁道最近的请求访问的磁道,并且与磁头的移动方向一致,磁头永远是从里向外或从外向里一致移动完才掉头,与电梯类似。
  • 单向扫描调度算法CSCAN:与SCAN不同的是,只做单向移动,即只能从里向外或者从外向里

输入输出技术

计算机系统中存在多种内存与接口地址的编址方法,常见的是下面两种:

内存与接口地址独立编址方法

内存地址和接口地址是完全独立的两个地址空间。访问数据时所使用的指令也完全不同,用于接口的指令只用于接口的读/写,其余的指令全都是用于内存的。因此,在编程序或读程序时很易使用和辨认。这种编址方法的缺点是用于接口的指令太少、功能太弱。

内存与接口地址统一编址方法

内存地址和接口地址统一在一个公共的地址空间里,即内存单元和接口共用地址空间。优点是原则上用于内存的指令全都可以用于接口,这就大大地增强了对接口的操作功能,而且在指令上也不再区分内存或接口指令。该编址方法的缺点就在于整个地址空间被分成两部分,其中一部分分配给接口使用,剩余的为内存所用,这经常会导致内存地址不连续。

计算机和外设间的数据交互方式

  • 程序控制(查询)方式:CPU主动查询外设是否完成数据传输,效率极低。
  • 程序中断方式:外设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高。中断响应时间指的是从发出中断请求到开始进入中断处理程序。中断处理时间指的是从中断处理开始到中断处理结束。中断向量提供中断服务程序的入口地址。多级中断嵌套,使用堆栈来保护断点和现场。
  • DMA方式(直接主存存取):CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建立直接的数据通路,效率很高
  • 在一个总线周期结束后,CPU会相应DMA请求开始读取数据;CPU响应程序中断方式请求是在一条指令执行结束时。

中断流程

总线结构

总线(Bus)是指计算机设备和设备之间传输信息的公共数据通道。总线是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,因此可以将计算机系统内的多种设备连接到总线上,
从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:

  • 内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。
  • 系统总线:是板级总线,用于计算机内各部分之间的连接,具体分为数据总线(并行数据传输位数 64位/32位 )、地址总线(系统可管理的内存空间的大小)、控制总线(传送控制命令)。代表的有ISA总线、EISA总线、PCI总线。
  • 外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拔)。

计算机可靠性

可靠性指标

  • 平均无故障时间:MTTF=1/失效率
  • 平均故障修复时间:MTTR=1/修复率
  • 平均故障间隔时间MTBF=MTTF+MTTR
  • 系统可用性:MTTF/(MTTF+MTTR)*100%

串并联系统可靠性

无论什么系统,都是由多个设备组成的,协同工作,而这多个设备的组合方式可以是串联、并联也可以是混合模式,假设每个设备的可靠性为R1,R2,....Rn,则不同系统的可靠性公示如下:

  • 串联系统:一个设备不可靠,整个设备崩溃,整个系统的可靠性:R=R1*R2*...*Rn
  • 并联系统:所有设备都不可靠,整个系统才崩溃,系统可靠性:R=1-(1-R1)*(1-R2)*...*(1-Rn)
  • N模冗余系统:N模冗余系统有N个(N=2n+1)相同的子系统和一个表决器组成,表决器把N个子系统中占多数相同结果或的输出作为输出系统的输出。在N个子系统重,只要有n+1个或者n+1个以上的子系统能够正常工作,系统就能正常工作。
  • alipay_img
  • wechat_img
Talk is cheap, show me the code.
最后更新于 2024-09-16