一、现代计算机硬件框图
二、存储系统
(一)、主存储器
存储体是计算机中用于储存数据的地方,它由若干个存储单元组成(存储单元由若干个存储元组成),是一个独立的存储实体。存储体具有读取、写入和保持(记忆)的功能。
MAR(内存地址寄存器)是一种特殊类型的寄存器,用于保存即将被读取或写入内存的数据所对应的内存地址。通过将地址信息传递给内部总线或外部总线,它充当一个引导信号,从而实现对主存储器或其他外围设备进行数据读写操作。
MDR(内存数据寄存器)则用于暂存从内存读出的一条指令或一个数据字,或准备写入内存的指令或数据。
MAR的位数:反映了存储单元的个数
MDR的位数:反应了存储字长
(二)、层次化存储结构
局部性原理是层次化存储结构的支撑
时间局部性:刚被访问的内容,立即又被访问
空间局部性:刚被访问的内容,临近空间很快被访问
注:虚拟存储体系是由主存 + 辅存两级存储器构成;三级存储结构是由 Cache + 主存 + 辅存三部分构成
(三)、层次化存储结构-分类
1、存储器位置
内存 & 外存
2、存取方式
(1)按内容存取
相联存储器(如Cache)
(2)按地址存取
随机存取存储器(如内存)
顺序存取存储器(如磁带)
直接存取存储器(如磁盘)(包含有随机存取存储器和顺序存取存储器的典型存储特征)
3、工作方式
(1)随机存取存储器RAM(如内存DRAM)
(2)只读存储器ROM(如BIOS)
注:DRAM:动态随机存取存储器;SRAM:静态随机存取存储器;EEPROM:点可擦可编程只读存储器。静态的(SRAM)比动态(DRAM)的快得多,但也贵得多。SRAM用来作为高速缓冲存储器(Cache),它会将每个位存储在一个双稳态的存储器单元中;DRAM用来作为主存及图形系统的帧缓冲区,它会将每个位存储为对一个电容的充电,由于电容非常小,在10~100ms时间内会失去电荷,所以需要周期性地刷新充电以保存信息。
随机存取存储器(RAM):即手机中的运行内存,也相当于电脑的内存条。它主要的作用是提供程序运行时所需的高速缓存空间,确保程序能够流畅运行。RAM是临时存储数据的地方,与CPU交换高速缓存数据,所以运行内存的大小直接影响到系统能够同时运行多少个程序,以及程序运行的速度。当程序关闭或手机重启时,RAM中的数据会被清除。
只读存储器(ROM):即手机中的机身存储,也相当于电脑的硬盘。ROM是手机的内置存储设备,用于永久存储数据和程序,包括安装的软件、系统文件、照片、视频等。即使手机断电,ROM中的数据也不会丢失。与RAM不同,ROM的容量通常较大,以满足用户存储大量数据的需求。
注:手机中并不存在独立的内存条,所有的存储都是整合在一起的。在物理结构上,手机的CPU、RAM和ROM等组件通常都集成在主板上,但它们在逻辑和功能上是分开的。
(四)、主存与Cache
1、平均周期
h:Cache的命中率; 也称为失效率(未命中率)
:Cache的周期时间;
:主存储器的周期时间;
:“Cache+主存储器”的系统的平均周期
例如:h = 90%; = 10ms; = 100ms;则 = 19ms
注:Cache的命中率 h 并不会随着容量增大而线性地提高,而是呈现一根抛物线逐渐趋于平缓。Cache的设计思想就是在合理的成本下提高命中率。
2、地址映像
地址映像是将主存与Cache的存储空间划分为若干大小相同的页(或称为块);主存与Cache之间的地址映射由硬件直接完成
例如,某机的主存容量为1GB,划分为2048页,每页512KB;Cache容量为8MB,划分为16页,每页512KB
冲突率 | 电路复杂度 | |
直接相联映像 | 高 | 简单 |
全相联映像 | 低 | 复杂 |
组相联映像 | 折中 | 折中 |
注:全相联映像只适用于小容量的Cache
3、主存编址与计算
(1)、存储单元
存储单元个数 = 最大地址 - 最小地址 + 1
(2)、编址内容
按字编址:存储体的存储单元是字存储单元,即最小寻址单位是一个字
按字节编址:存储体的存储单元是字节存储单元,即最小寻址单位是一个字节
注:一个字的大小并不是固定的,例如在16位(或称为字长为16位)系统中,一个字等于2个字节;在32位(或称为字长为32位)系统中,一个字等于4个字节;在64位(或称为字长为64位)系统中,一个字等于8个字节
总容量 = 存储单元个数 × 编址内容
三、CPU
(一)、CPU中的寄存器
指令寄存器的位数主要取决于指令字长。指令寄存器(IR)是用于暂存当前正在执行的指令的部件。当执行一条指令时,会先把它从内存取到缓冲寄存器中,然后再传送至指令寄存器。因此,指令寄存器的位数应满足指令长度的要求,以便正确存储和分析正在执行的指令。
在CPU的寄存器中,指令寄存器对用户是完全透明(看不见,无从得知)的。这主要是因为指令寄存器的操作是自动进行的,不需要用户的任何干预。当CPU执行一条指令时,它会自动从内存中取出指令,并将其存放到指令寄存器中。这个过程是CPU内部的操作,用户无法直接访问或修改指令寄存器中的内容。
与此不同的是程序计数器、状态寄存器、通用寄存器。它们对用户不是完全透明的,程序员可以利用程序计数器寻址;可以利用状态标志进行判断和跳转;可以利用通用寄存器存取数据。
程序计数器(PC)是CPU中的寄存器。它是一块很小的内存空间,几乎可以忽略不计。程序计数器用于存储CPU要执行的下一条指令的地址(地址寄存器(IR)用于保存当前CPU所访问的内存单元的地址),当CPU执行代码时,程序计数器会按照一个固定的顺序存储每条指令的地址,并在执行一条指令之后自动更新为下一条指令的地址。在Java虚拟机中,每个线程都有自己的程序计数器,用于存储正在执行的当前指令的地址。因此,程序计数器在CPU执行指令和程序控制流中起着至关重要的作用。
状态寄存器(SR)用来存放CPU的各种状态码,例如运算结果的正负号、溢出标志、中断标志和寻址方式等。这些状态码反映了当前CPU的工作状态以及刚刚执行过的指令的结果状态。因此,状态寄存器在CPU中扮演着非常重要的角色,它帮助CPU正确地执行指令并处理各种运算结果。
通用寄存器是用于存储数据的一种寄存器。1、它们提供了一组可供程序使用的存储单元,用于暂时保存计算过程中的数据。这些寄存器是CPU内部最快速的存储器,能够迅速访问和更新其中的数据,从而加快计算速度。2、它还可以用于在CPU内部传递数据。通用寄存器可以作为数据的临时存储位置,将数据从一个计算单元传递到另一个计算单元,从而减少对内存的访问次数,提高数据传输的效率。3、通用寄存器还参与算术和逻辑操作,CPU可以直接从寄存器中获取数据,并对其进行加法、减法、乘法、除法和逻辑运算等操作。通用寄存器还可以用于存储临时计算的结果,以及执行地址计算所需的中间结果和临时值。
(二)、CPU中的各个组件
1、寄存器:寄存器是CPU内部的一种存储器件,用于暂存数据和指令。CPU中有多种类型的寄存器,如通用寄存器、程序计数器(PC)、指令寄存器(IR)等,它们在数据处理和控制流程中起到重要作用。
2、算术逻辑单元(ALU):算术逻辑单元是CPU的核心部分,用于执行算术和逻辑运算。它负责处理各种数据运算,如加、减、乘、除等数学运算,以及与、或、非、异或等逻辑运算。
3、控制单元(CU):控制单元是CPU的“指挥中心”,基本功能是从内存中存指令和执行指令,协调计算机各个部件的操作。它从内存中读取指令,并根据时钟信号按照一定步骤控制指令的执行。里边包含有指令译码器,指令译码器的主要作用是对现行指令进行分析,确定指令类型和指令所要完成的操作以及寻址方式,并将相应的控制命令发往相关部件。
4、时钟:时钟是CPU中的一个重要组成部分,用于控制CPU的时序和流程。时钟速度越快,CPU的运行速度和效率就越高。
5、总线:总线是CPU与其他设备(如内存、输入输出设备等)之间的连接桥梁,负责数据的传输和控制信号的交流。总线线路可以被归为三类:数据总线、地址总线和控制总线。
6、输入输出控制器:输入输出控制器用于控制计算机与外部设备之间的数据传输。它可以向外部设备发送数据和指令,也可以将外部设备传输的数据和指令传输到CPU中。
(三)、CPU的结构
运算器
1、算术逻辑单元(ALU):数据的算数运算和逻辑运算
2、累加寄存器(AC):通用寄存器,为ALU提供一个工作区,用于暂存数据
3、数据缓冲寄存器(DR):写内存时,暂存指令或数据
4、状态条件寄存器(PSW):存状态标志与控制标志(争议:也有将其归为控制器的)
控制器
1、程序计数器(PC):存储下一条要执行指令的地址
2、指令寄存器(IR):存储即将执行的指令
3、指令译码器(ID):对指令中的操作码字段进行分析解释
4、时序部件:提供时序控制信号
四、数据的表示
(一)、进制转换
(二)、数据转换
当符号位为负,补码变原码(原码变补码):从右往左数第一个“1”的左边的数全部取反,右边的数全部不变
例如:原(补)码:1 0010 1000 → 补(原)码:1 1101 1000
例如:当n=8,也就是一共8个数位时;
其中,定点整数 -128 的补码为1000 0000 是人为规定
定点小数 -1 的补码为1000 0000 是人为规定
原码和反码都有 +0 和 -0;而补码和移码都只有一个 +0,因为 -0 被用来人为规定成其他数了
在计算机系统中常用补码来表示和运算数据,因为这时候可以将符号位和其他位统一处理,减法也可按加法来处理,从而简化计算机运算部件的设计。
(三)、浮点数的表示
特点:
1、一般尾数用移码,阶码用移码(IEEE754标准的尾数用原码)
2、阶码的位数决定数的表示范围,位数越多,范围越大
3、尾数的位数决定数的有效精度,位数越多,精度越高
4、对阶时,小阶向大阶看齐,然后较小数的尾数进行算术右移(符号位不变,对数值位进行移动;逻辑移位为不区分符号位,一整个数一起移动)
五、逻辑运算符
逻辑运算符优先顺序:! > 算术运算符 > 关系运算符 > && > | | > 赋值运算符
算数运算符:+,-, ×, ÷
关系运算符:>, ≥, <, ≤, =, !=
短路原则
无需对表达式中所有操作数或运算符进行计算就可确定表达式的值
例如:(1)、a && b && c :只有a为真才需要判断b的值,只有a和b同时为真才需要判断c
(2)、a | | b | | c :只要a为真,就不必判断b和c的值,只有a为假才判断b,只有a和b同时为假才判断c
六、校验码
校验码位数 | 校验码位置 | 检错 | 纠错 | 校验方式 | |
奇偶校验 | 1 | 一般拼接在头部 | 可检奇数个错 | 不可 | 奇(偶)校验:最终 “1” 的个数是奇(偶)数个 |
CRC循环冗余校验 | 生成多项式最高次幂的次数 | 拼接在信息尾部 | 可检错 | 不可 | 模二除法求余数,拼接作为校验码 |
海明校验 | 插在信息位中间 | 可检错 | 可以 | 分组奇偶校验 |
注:海明校验码公式中,k为校验码位数,n为信息码位数
CRC校验码:
1、根据生成多项式得出除数;
例如:G(X) = ,则除数为11001(有x的几次方,对应2的多少次方位就是1)
2、对CRC信息码进行算数左移(左移位数即为多项式最高次幂(校验码位数),低位补0),最终得到被除数;
例如:110 1011 → 110 1011 0000
3、将两数进行模二除法,最终得到余数位数等于校验位时即得到了校验码;
例如:如下图,110 1011 0000 对 11001进行模二除法得到商1001010和余数1010,所以最终CRC校验码为1010,发送出去的CRC循环冗余校验码为110 1011 1010
接收方把接收到的CRC码作为被除数,根据多项式得出除数,对两数进行模二除法, 若余数为0,则信息正确,如果某一位出错,则余数不为0。不同的位数出错它的余数也会不同,余数和出错位序号之间有唯一的对应关系。
七、指令系统与计算机体系结构
(一)、寻址方式
- 立即寻址方式:操作数作为指令的一部分直接写在指令中,这种操作数被称为立即数
- 直接寻址方式:指令所要的操作数存放在内存中,指令中给出的是该操作数的地址
- 间接寻址方式:指令中存放了一个地址,这个地址对应的内容是操作数的地址
- 寄存器寻址方式:操作数存放在内存中,寄存器内存放的是操作数的地址
- 寄存器间接寻址方式:寄存器内存放的是操作数的地址
注:立即寻址相当于常量;直接寻址相当于变量;间接寻址相当于指针
(二)、CISC和RISC
指令系统类型 | CISC(复杂) | RISC(精简) |
指令 | 数量多;使用频率差别大;可变长格式 | 数量少;使用频率接近;定长格式;大部分为单周期指令;操作寄存器,只有Load/Store操作内存 |
寻址方式 | 支持多种 | 支持方式少 |
实现方式 | 微程序控制技术(微码) | 增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线 |
其他 | 研制周期长 | 优化编译,有效支持高级语言 |
(三)、Flynn分类法
体系结构类型 | 结构 | 关键特性 | 代表 |
单指令流单数据流(SISD) | 控制部分:一个 处理器:一个 主存模块:一个 | 单处理器系统 | |
单指令流多数据流(SIMD) | 控制部分:一个 处理器:多个 主存模块:多个 | 各处理器以异步的形式执行同一条指令 | 并行处理机 阵列处理机 超级向量处理机 |
多指令流单数据流(MISD) | 控制部分:多个 处理器:一个 主存模块:多个 | 被证明不可能,至少是不实际 | 目前没有 |
多指令流多数据流(MIMD) | 控制部分:多个 处理器:多个 主存模块:多个 | 能够实现作业、任务、指令等各级全面并行 | 多处理机系统 多计算机 |
八、流水线
(一)、流水线周期以及流水线执行时间
- 流水线周期:执行时间最长的一段
- 流水线计算公式(理论公式):1条指令的执行时间 +(指令条数 - 1)× 流水线周期
- 实践公式:流水线周期 ×(一条指令总阶段数 + n - 1)
注:当题目无说明使用哪条公式时默认使用理论公式,若选择题没有答案则用实践公式
例如:一条指令执行阶段分解为取值、分析和执行三步,所用时间分别为3t,2t,4t,则流水线的周期为4t;若如今有100条指令,以串行方式全部执行完毕需要(3t + 2t + 4t)× 100 = 900t;若以流水线方式执行完毕理论所用时间为:3t + 2t + 4t +(100 - 1)× 4t = 405t;实践所用时间为4t ×(3 + 100 - 1)= 408t
(二)、流水线吞吐率
流水线的吞吐率:单位时间内流水线完成的任务数量或输出的结果数量
计算公式:TP = 指令总条数 / 流水线执行时间
流水线最大吞吐率: (T 是流水线周期)
例如:如上例,100条指令的吞吐率为:100 / 405t = 24.7%;最大吞吐率是:1 / 4t = 25%
(三)、流水线加速比
流水线加速比:完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比
例如:如上例,100条指令的加速比为:900t / 405t = 2.22
九、输入输出技术
(一)、数据传输控制方式
程序控制(查询)方式:分为无条件传送和程序查询方式两种。方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。
程序中断方式:与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度。(CPU无需等待也不必查询I/O状态。当I/O系统准备好以后,发出中断请求信号通知CPU;CPU接收到中断请求后,用栈保存正在执行的程序现场,打断的程序当前位置即为断点;随后通过中断向量表(保存中断服务程序的入口地址)转入I/O中的服务程序的执行,完成I/O系统的数据交换;最后返回打断的程序继续执行)
DMA方式(直接存储器存取方式):DMA方式是为了在主存与外设之间实现高速、批量数据交换而设置的。DMA方式比程序控制方式和中断方式都高效。(DMAC向总线裁决逻辑提出总线请求;CPU执行完当前总线周期即可释放总线控制权。此时DMA响应,通过DMAC通知I/O接口开始DMA传输)
通道方式
I/O处理机
注:从上到下效率越来越高。
十、系统总线
一条总线同一时刻仅允许一个设备发送,但允许多个设备接收。(分时双工,例如对讲机)
单总线结构:CPU与主存之间、CPU与I/O设备之间、I/O设备与主存之间、各种设备之间都通过系统总线交换信息。
优点:控制简单方便,扩充方便。
缺点:由于所有设备部件均挂在单一总线上,同一时刻只能在两个设备之间传送数据,这就使得系统总体数据传输的效率和速度受到限制。
总线分类
- 数据总线(Data Bus):在CPU和RAM之间来回传送需要处理或是需要储存的数据。
- 地址总线(Address Bus):用来指定在RAM之中储存的数据的地址。
- 控制总线(Control Bus):将微处理器控制单元的信号传送到周边设备。
注:并行总线适合近距离高速数据传输,而串行总线适合长距离数据传输。
十一、可靠性基础和系统性能评测
(一)、可靠性基础
平均无故障时间(MTTF):MTTF = 1 / λ,λ为失效率
平均故障修复时间(MTTR):MTTR = 1 / μ,μ为修复率
平均故障间隔时间(MTBF):MTBF = MTTF + MTTR
可靠性:一个系统对于给定的时间间隔内,在给定的条件下无失效运作的概率。可以用 MTTF /(1 + MTTF)来度量。
可用性:在给定的时间点上,一个系统能够按照规格说明正确运行的概率。可以用 MTBF /(1 + MTBF)来度量。
可维护性:在给定的使用条件下,在规定的时间间隔内,使用规定的过程和资源完成维护活动的概率。可以用 MTTR /(1 + MTTR)来度量。
系统可靠度问题:可靠度衡量了系统在规定的条件下及规定的时间内,完成规定功能的概率。系统的可靠性与系统中的部件组成方式有关。
例如:如上图所示,假设每个部件的可靠度分别为其里边的字母,则整个系统的可靠度为
(二)、系统性能评测
1、主频(时钟频率)与CPU时钟周期
时钟周期与主频(时钟频率,一秒钟有多少个时钟周期)互为倒数。例如:主频 = 2.4GHz,则CPU时钟周期 = 1 / 2.4GHz = 0.42ns
注:当表示主频、吞吐量等东西的时候,其中的K、M、G代表的不是2的多少次方了,而是1K = ;1M = ;1G = 。
2、运算速度
CPI与IPC是运算速度的衡量单位。C代表周期,P代表“每”,I代表指令条数;CPI代表平均每条指令占有多少个时钟周期,IPC代表平均每个时钟周期执行多少条指令。
3、吞吐量与吞吐率
吞吐量表示一段时间间隔内所执行的指令条数总量;吞吐率表示单位时间内所执行的指令条数。
MIPS = 指令条数 /(执行时间 × )= 主频 / CPI = 主频 × IPC
MFLOPS = 浮点操作次数 /(执行时间 × )