计算机系统的组成

将高级语言源程序转换为可执行目标文件的过程

预处理 → 编译 → 汇编 → 链接

计算机系统的分层

第六层高级语言层使用与机器无关的高级语言编程
第五层汇编语言层使用汇编语言进行编程
第四层操作系统层对计算机的硬件资源和软件资源统一管理调度
第三层ISA指令集体系结构层定义了计算机可执行的所有机器指令的集合
第二层微程序层将每一条机器指令编写成一个微程序,每个微程序包含若干条微指令,每条微指令对应一条或多条微操作
第一层逻辑电路层由寄存器、逻辑门等逻辑电路组成

性能指标

基本性能指标

1. 机器字长(Word Length)

  • 定义:计算机一次能处理的数据位数,通常与 CPU 寄存器和数据总线宽度相同。
  • 常见值:8位、16位、32位、64位。
  • 影响
    • 决定 CPU 的运算精度与处理范围。
    • 影响寻址范围,例如 32 位机器最大寻址空间为 232232 字节。
    • 影响指令格式和数据类型。

    ⚠️注意:机器字长与CPU内部用于整数运算的ALU的位数以及通用寄存器的宽度相等!!!


2. 吞吐量(Throughput)

  • 定义:单位时间内计算机系统完成的任务数量(如处理的指令数、请求数等)。
  • 单位:如 MIPS(百万条指令/秒)、FLOPS(浮点运算/秒)。
  • 特点
    • 衡量系统总体处理能力。
    • 与并行处理能力、I/O 速度、存储系统性能等密切相关。
    • 在多任务、服务器场景中更为重要。

3. 主存容量(Main Memory Capacity)

  • 定义:主存(RAM)可以存储数据和指令的总量。
  • 单位:字节(B)、千字节(KB)、兆字节(MB)、千兆字节(GB)等。
  • 影响
    • 决定可以直接参与运算的数据量大小。
    • 主存不足时系统频繁访问磁盘(换页),会显著降低性能。

4. 响应时间(Response Time)

  • 定义:从向计算机系统提交作业开始,到系统完成作业为止所需要的时间。
  • 类型
    • 交互式系统:指从用户输入命令到系统作出反应的时间。
    • 批处理系统:指从作业提交到作业完成所用的时间。
  • 影响因素
    • CPU处理速度、I/O响应能力、内存调度、系统负载等。

什么是MAR,什么是MDR?

MDR(内存数据寄存器)

定义:

用于暂存从内存中读取的数据或即将写入内存的数据

特点:

  • 读操作:从内存取出数据,暂存在 MDR 中,供 CPU 使用
  • 写操作:先将数据写入 MDR,再送入指定内存地址

⚠️注意:MDR的位数和存储字长相等!

MAR(内存地址寄存器)

定义:

用于存放 CPU 当前要访问的内存地址(读取或写入)

特点:

  • 由 CPU 控制单元写入地址
  • 地址通过总线发送到内存
  • 不存数据,仅存地址

MAR的位数决定存储单元的数量,即2M2^M次方个

与运算速度相关的性能指标

CPU时钟频率和时钟周期:

CPU时钟信号是一个基本定时信号,它是一张固定频率的脉冲信号,用于驱动计算机内部各组件协调工作。

  • 这种脉冲信号的的频率被称为CPU时钟频率(Clock Rate),基本单位为赫兹Hz
  • CPU时钟周期(Clock Cycle or Clock Tick,当然也可以简称为Clock or tick)是CPU时钟频率的倒数,基本单位为秒s
频率单位换算单位周期单位换算关系
赫兹Hz基本单位s基本单位
千赫兹kHzkHz = 10310^{3}Hz毫秒msms = 10310^{-3}s
兆赫兹MHzMHz = 10610^{6}Hz微秒μs\mu sμs\mu s = 106s10^{-6}s
吉赫兹GHzGHz = 10910^{9}Hz纳秒nsns = 109s10^{-9}s

CPI(Cycles Per Instruction)

定义

  • 执行一条指令所需要的时钟周期数量
  • 由于不同指令的功能不同,即使功能相同的指令还可能有不同的寻址方式,因此每条指令执行所需要的时钟周期数量也可能不同。
CPI=程序执行所需时钟周期数量/程序所包含的指令数量CPI = 程序执行所需时钟周期数量/程序所包含的指令数量
一条指令该指令执行所需要的时钟周期数量
一类指令构成该类指令的所有指令执行所需要时钟周期数量的平均值
一个程序构成该程序的所有指令执行所需要时钟周期数量的平均值

有计算公式如下:Pi表示每类指令数量在程序所包含的指令数量中所占的比例。

CPI=Σ(CPIiPi)CPI = \Sigma(CPI_i *P_i)

CPU执行时间:

  • 真正用于用户程序的执行时间,而不包括为执行用户程序而花费在操作系统、IO等等上的时间
CPU执行时间=程序执行所需时钟周期数量时钟周期CPU执行时间 = 程序执行所需时钟周期数量 *时钟周期
CPI=程序执行所需时钟周期数量/程序所包含的指令数量CPI = 程序执行所需时钟周期数量/程序所包含的指令数量
CPU执行时间=CPI程序所包含的指令数量)时钟周期\therefore CPU执行时间 = (CPI*程序所包含的指令数量)*时钟周期

因为程序P是相同的,执行时间 = CPI*P所包含的指令数量*时钟周期,所以速度比就是CPI*时钟周期的反比。

IPC(Instructions Per. Cycle)

  • 每个时钟周期能够执行的指令数量
  • 是CPI的倒数!

MIPS(Million Instuctions Per Second)

  • 每秒执行多少百万条指令
MIPS=(程序包含指令数量/CPU执行时间)106MIPS = (程序包含指令数量/CPU执行时间)*10^{-6}

MIPSMIPS = (时钟频率/CPI)*10610^{-6}

计算机内部的数据表示

定点数的编码

原码

第一位为符号位,0表示正数,1表示负数。其余位置为真值的绝对值

一般的,对于定点正数,符号位与真值位之间用逗号分隔,定点小数使用小数点分隔。

缺点:

  • 真值0在原码中有两种不同的表示
  • 符号位不能直接参与运算

反码

  • 正数的表示与原码相同
  • 负数的表示:符号位为1,其余按位取反

eg:(+61)10=(00111101)2(+61)_{10}=(00111101)_2

(61)10=(11000010)2(-61)_{10}=(11000010)_2反码

特点:

  • 零有两种表示,全1和全0,运算时跨过0会产生一个单位误差。1111)2+1=(0000)2(1111)_2 +1 = (0000)_2

补码

对反码的改进,只要在负数反码的基础上+1,正数与原码相同。

  • 是一个数值计量系统的计量范围,记作modmodMM
  • 只要确定了模,就可以找到一个与负数等价的正数来代替此负数,该正数就是负数的补数
  • 一个负数可以用它的正补数来替代,而这个正补数可以用模数加上负数本身求得
  • 补数的绝对值之和为模数,正数的补数就是正数本身

对一个数的补码表示,求其相反数的补码,方法是:

将其所有位(包括符号位)按位取反,然后在末位加 1。

移码

就是在真值上加一个常数2n2^n

也就是把补码的符号位取反

在数轴上,移码所表示的范围对应于真值在数轴上范围向轴的正方向移动2n2^n单位

特点:

  • 保留了真值的大小顺序
  • 0只有一种表示

浮点数的表示

浮点数的规格化

  • 最高位作为有效位,为1
  • 左规:尾数左移1,那么阶码也跟着-1。

运算方法和运算器

算术移位与逻辑移位