进制与计量

K、M、G、T、P

单位 名称 定义 对应的字节数 换算关系
K Kilo 千 2^10^ 1KB = 1024B
M Mega 百万 2^20^ 1MB = 1024KB
G Giga 十亿 2^30^ 1GB = 1024MB
T Tera 万亿 2^40^ 1TB = 1024GB
P Peta 千万亿 2^50^ 1PB = 1024TB

存储和网络中换算区别

存储 1KB = 1024B, 1MB = 1024KB
网络 1KB/s = 1000B/s, 1MB/s = 1000KB/s

机器数与码制 原码反码补码

原码、反码、补码和移码

码制 定义 数值0表示 8位表示范围 备注
原码 最高位为符号位,0表示正数,1表示负数 有+0和-0两种表示 -127~+127 0正1负
反码 正数的反码与原码相同;
负数符号位不变,其余位取反
有+0和-0两种表示 -127~+127 无
补码 正数的补码与原码相同;
负数的补码在反码基础上加1
只有一种表示法,即:00000000 -128~+127 适合数字加减运算
移码 在补码基础上符号位取反 只有一种表示法,即:10000000 -128~+127 适合浮动数阶码计算

小结:

  • 原码、反码和补码正数表示方法一样
  • 原码和反码表示范围:-127~+127,正负0表示不一样
  • 补码和移码表示范围:-128~+127,正负0表示一样

示例:

编码方式 数值 表示方法
原码 +1 0 0000001
原码 -1 1 0000001
反码 +1 0 0000001
反码 -1 1 1111110 (符号位不变,其余位取反)
补码 +1 0 0000001
补码 -1 1 1111111 (反码基础上加1)
移码 +1 1 0000001
移码 -1 0 1111111 (补码基础上符号位取反)

定点数与浮点数

定点数和浮点数对比

特性 定点数 浮点数
定义 小数点位置固定不变的数 由阶码、尾数和符号位组成,能表示很大范围的数值
表示形式 小数点固定在最高位之前或最低位之后,且小数点不占位 科学计数法形式,$$N = M * R ^ e$$,
M为尾数,e为指数,R为基数
溢出处理 上溢:超出最大表示范围时无精确处理方式
下溢:小于最小表示值时作0处理或有特定处理
根据硬件和软件设计,可能有特定的溢出标志或处理机制
应用场景 精度要求不高,范围相对有限的计算 需要大范围和高精度的数值计算,如科学计算、工程计算
优点 实现简单,运算速度快 表示范围广,精度可变,灵活性高
缺点 表示范围受限,可能遇到溢出问题 实现复杂,运算速度相对较慢
示例 定点整数:102(小数点默认在最后)
定点小数:0.102(小数点在最前)
$3 * 10^8$的浮点表示,尾数3,指数8,基数10

浮点数的计算

完成浮点数加减法五个基本步骤:

  1. 对阶(向大对阶,小数点左移,尾数右移):如$210^3 + 5 * 10^ 5$向大对阶为$0.0210^5 + 5 * 10^ 5$
  2. 尾数加减:$0.02 + 5 = 5.02$
  3. 规格化:$ 5.02 * 10 ^5$
  4. 舍入:
  5. 检查溢出:

计算机组成结构

计算机组成结构概述

计算机硬件系统依旧为冯诺依曼(扩展:图灵(图灵提出了思想))设计的体系结构,即由

  1. 运算器
  2. 控制器
  3. 存储器
  4. 输入设备
  5. 输出设备

以上五大部件组成。

image-20240328221218801

image-20240328221228982

CPU与运算器、控制器

运算器和控制器

组件 功能描述 主要组成部分
中央处理器 (CPU) 计算机的核心,负责执行程序指令,处理数据 运算器 + 控制器
运算器 负责算术与逻辑运算 ALU (算术/逻辑单元), 寄存器, 多路转换器, 数据总线
- ALU: 执行基本的数学和逻辑运算
- 寄存器: 存储运算过程中的数据和中间结果
- 多路转换器: 选择数据路径
- 数据总线: 在CPU内部及与内存之间传输数据
控制器 控制指令的读取、解释与执行,协调CPU与其他硬件组件
不仅要保证指令的正确执行,还要能够处理异常事件
PC(程序计数器), 指令寄存器, 指令译码器等
- PC(程序计数器): 存储当前指令地址,指示下一条指令的位置
- 指令寄存器: 存储当前正在执行的指令
- 指令译码器: 解析指令,生成控制信号
- 状态/条件寄存器: 存储CPU运行状态信息
- 时序发生器: 产生CPU操作的时序信号
- 微操作信号发生器: 根据指令译码结果产生控制信号,控制硬件执行

指令执行的步骤

步骤 动作 说明
第1步 取指 取操作数和指令如取“1”、“1”、“+”
第2步 译码 识别指令是加减乘除如将“+”翻译为加法操作
第3步 执行 运算器的算数运算单元ALU执行加法操作

几个常考重要组件

组件 功能 备注
程序计数器(PC) 是用于存放下一条指令所在单元的地址 最常考!!!
指令寄存器(IR) 存放当前从主存读出的正在执行的一条指令(含操作码和地址码)。 PC存的是地址,IR存的是指令
指令译码器 分析指令的操作码,以决定操作的性质和方法。 -

计算机指令执行过程

  1. 处理器首先从程序计数器PC中取出指令在内存中的地址,通过地址总线寻址获取

  2. 然后,把从内存中取出的这条指令经数据总线送往指令寄存器中

  3. 指令的操作码被送到指令译码器中译码,地址码则送到地址形成部件,地址形成部件根据指令特
    征将地址码形成有效地址,取出数据参与操作。

  4. 运算器执行指令

寄存器

寄存器在CPU的内部,相比于Cache、内存等,寄存器的访问速度最快,

寄存器用于暂存寻址和计算过程的信息。分为:

寄存器 功能
累加器 是一个数据寄存器,在运算过程中暂时存放被操作数和中间运算结果,是通用寄存器的一种。
通用寄存器组 是CPU中的一组工作寄存器,用于暂存操作数或地址
其他寄存器 标志寄存器、指令寄存器。

总线和总线速率计算

总线简介

总线是一种内部结构,它是CPU、内存、输入/输出设备传递信息的共用通道,主机的各部件通过总线互相连接,外部设备通过相应的接口电路与总线相连接,从而形成了计算机硬件系统。

总线类型 功能描述 特点
数据总线 (Data Bus, DB) 传递数据信息 between CPU与内存或其他I/O设备 - 实现数据传输
地址总线 (Address Bus, AB) 专门用于传送地址信息,决定CPU可直接寻址的内存空间大小 - 地址总线位数决定内存大小:地址总线位数越多,能访问的地址范围越大
- 例如:32位地址总线最大寻址4GB内存
控制总线 (Control Bus, CB) 传输控制信号和时序信号,协调系统内各部件的工作 - 包括读/写信号、中断信号、时钟信号等
- 确保系统部件间操作同步进行

image-20240328223724337

CPU特性

概念 定义 作用 关系
指令周期 取出并执行一条指令所需的时间 指令执行的基本时间单位 包含多个总线周期,根据指令复杂度变化
总线周期 CPU进行一次存储器或I/O端口访问所需的时间(一般为存取一个字节) 数据传输的基本时间单位 包含多个时钟周期,通常为4个,依系统设计而异
时钟周期 计算机系统中最小的时间单位,时钟脉冲的倒数
(如 i5 2.9GHz则时钟周期就为 1/2.9Ghz)
决定计算机的基本操作速度 构成总线周期的基础,是最基本的时间计量单位

总线数据传输速率公式

总线传输速率计算公式如下:(记住下面公式)
$$
总线数据传输率= \frac{1}{{每个总线周期包含的时钟周期数} * {时钟周期} }* 每个总线周期传送的字节数

                    \\ = \frac{时钟频率}{每个总线周期包含的时钟周期数} * 每个总线周期传送的字节数

$$
例如:某系统总线的一个总线周期包含3个时钟周期,每个总线周期中可以传送32位数据。若总线的时钟频率为33MHz,则总线的带宽(即传输速度)应该是多少?

根据上述公式得出:33MHz/3×32b=11M×32b=44MB/s

指令基础 RISC CISC

指令基础

指令的组成

指令由操作码和地址码两个部分组成的。

组成 说明
操作码 指出该指令要完成什么操作:如加法操作
地址码 提供原始的数据(操作数):如数字

操作数的寻址方式

寻址方式 描述
立即寻址 直接给出操作数而非地址,无需查找地址(通常是最快的)
直接寻址 直接给出操作数地址或所在寄存器号(寄存器寻址),如给出操作数的内存地址
间接寻址 给出的是指向操作数地址的地址
变址寻址 给出的地址需与特定的地址值累加从而得出操作数地址

注意:直接指出操作数本身不是直接寻址,而是立即寻址

CISC与RISC对比

指令系统类型 指令 寻址方式 实现方式
CISC(复杂) 数量多,使用频率差别大,可变长格式 支持多种方式 -
RISC(精简) 数量少,使用频率接近,定长格式 支持方式少 硬布线逻辑控制为主

流水线技术

流水线执行时间

流水线概述

假定有某种类型的任务,可分成k个子任务(A、B、C),每个子任务需要时间t,共有这样n个任务($I_1$~$I_n$)

  • 则完成单个任务所需的时间为$kt$​.

  • 若以传统的方式,完成k个任务所需的时间是 $nkt$

  • 使用流水线技术,花费的时间是 $kt + (n-1)t$ = $(k + n - 1)t$,该时间远小于上面的$nkt$

  • 注意,如果每个子任务所需的时间不同,其时间取决于执行顺序中最慢的那一个,即t应当取$max(t_1, t_2, …, t_k)$。

笔者注:由下图可以看出,以流水线方式完成任务所需时间由两个部分组成

  1. 传统方式执行完n个子任务如下图的A、B、C所需的时间kt
  2. 第n个任务$I_n$长出$I_1$的部分(实际上长出几格是关于n的,首项为0,公差为1的等差数列)所需时间,该时间与n有关,为(n-1)t

image-20240330212413179

流水线案例分析

若指令流水线把一条指令分为取指令、分析和执行三部分,三部分的时间分别是取指令2ns,分析2ns,执行1ns。最长的是2ns,因此100条指令全部执行完毕所需要的时间是:

  • 按照流水线执行,则t = 2ns,n = 100
  • 第一条指令顺序执行2ns+2ns+1ns = 5ns
  • 后面100-1条指令流水线执行(100-1) x 2ns = 198ns
  • (2ns+2ns+1ns)+(100-1)x2ns=203ns,现在考试选这个,即第一条顺序执行,后面n-1条按照流水线执行
  • 2ns+2ns+2ns+(100-1)x2ns=204ns,早期考试选这个,即所有指令都按照流水线执行

考试用流水线执行时间公式

综上推导过程和案例分析可知,考试考察的流水线执行时间公式实际为
$$
T_p = t_1 + t_2 + … + t_k + (n - 1) * max(t_1, t_2, …, t_k)
$$
其中,n为连续的指令数量即流水线上任务数量,k为每个指令内子任务数量

流水线的吞吐率

流水线吞吐率公式1

指在单位时间内(基本是1秒)流水线所完成的任务数量或输出的结果数量。
$$
p = \frac{n}{T_k}
$$

其中,n为任务数,Tk是处理完成n个任务所用的时间

上面案例的吞吐率为
$$
p = \frac{n}{T_k}= \frac{100}{203*10^{-9}s}=4.93 * 10^8/s
$$

流水线吞吐率公式2

吞吐率另一个公式:
$$
p= \frac{1}{\Delta t}=\frac{1}{max(t_1,t_2…t_k)}
$$

意即吞吐率是最长流水段操作时间的倒数

加速比

定义:指不采用流水线的执行时间/采用流水线的执行时间,用来衡量并行系统或程序并行化的性能和效果

如上面的案例中的速比为500/203=2.46(如果不采用流水线,则执行100条指令需要500ns)

案例分析

image-20240330204408939

解析:

  • 由题意得,子任务数量k = 4,流水线任务数量n = 8,各个子任务执行时间如图所示

  • 流水线执行时间为
    $$
    T_p = t_1 + t_2 + … + t_k + (n - 1) * max(t_1, t_2, …, t_k) = 7 \Delta t + (8-1) * max(t_1….t_k) = 7 \Delta t + 7 * 3\Delta t = 28\Delta t
    $$

  • 流水线吞吐率为8/28$\Delta$ t ,选择C

主存储器

内存容量计算

Cache高速缓存

存储技术

站内搜索

没有找到内容!