概论

计算机基本组成

  • ENIAC,手动接线来控制计算
  • 早期冯诺依曼机
  • 特点
    • 指令和数据同等地存于存储器,按地址访问,且都用二进制表示
    • 指令由操作码和地址码组成
    • 存储程序:需要将指令以二进制代码的形式事先输入到主存储器中,再进行操作
    • 以运算器为中心
  • 组成:输入设备 -> (存储器、运算器、控制器) -> 输出设备
  • 现代计算机
  • 特点:以存储器为中心
  • 组成:CPU(运算器、控制器) <-> 存储器 <-> 输入输出设备

主存储器(内存)

  • 组成:存储体、MAR(存储地址寄存器)、MDR(存储数据寄存器)
  • 基本概念
  • 存储元:存储1bit的电子元件
  • 存储单元:每个单元有多个存储元,可以存放一串bit
  • 存储字:一个存储单元中,具体存放的数据
  • 存储字长:一个存储单元中,存放的数据的长度,通常是1B、2B、4B等
  • 计算
  • 用MAR算存储单元数量:4bit地址线->$2^4$个存储单元
  • 用MDR算存储字长:32bit数据线->32bit的存储字长

运算器

  • 组成:寄存器(ACC、MQ、X)、算术逻辑单元ALU
  • ACC:累加器,存放操作数或运算结果
  • MQ:乘商寄存器,乘除运算时,存放操作数或运算结果
  • X:通用寄存器,用于存放操作数
  • ALU:实现算术运算和逻辑运算

控制器

  • 组成:CU、IR、PC
  • CU:控制单元
  • IR:指令寄存器,存放当前执行的指令
  • PC:程序计数器,存放下一条指令地址,更新时pc+=指令长度(Byte)

计算机软件

  • 三种语言:高级语言 -> 汇编语言 -> 机器语言
  • 翻译程序
  • 编译:高级->汇编;高级->机器(只翻译一次)
  • 解释:高级->机器(每执行一次就要翻译一次)
  • 汇编:汇编->机器
  • 软件和硬件的逻辑功能等价性:同一个功能可以用硬件实现(性能高成本高),也可以软件实现(性能低成本低)
  • 指令集体系结构ISA:软件与硬件之间的界面
  • 计算机系统的层次结构
  • 高级语言机器(虚拟机器):将编译程序翻译为汇编程序,软件部分
  • 汇编语言机器(虚拟机器):将汇编程序翻译为机器语言程序,软件部分
  • 机器语言机器(传统机器):执行二进制指令,硬件部分
  • 微指令系统(微程序机器):由硬件执行微指令,硬件部分

性能指标

  • 存储器的性能指标
  • 总容量=存储单元个数*存储字长(bit)
  • 单位:KMGT是二进制单位,以2为底(一般用于描述存储容量和文件大小时
  • CPU的性能指标
  • clk周期tc=time/clock
  • CPI(clk/inst)、IPC(inst/clk)
  • 一条指令的时间t = CPI*clk周期
  • 所有指令的时间T(cpu执行时间)= 指令条数*t=cpu总周期数*clk周期
  • cpu主频(clk频率) = 1/clk周期(Hz)
  • IPS(inst/s)=主频/平均CPI
  • FLOPS(浮点操作/s)
  • 单位:KMGT是数量单位,以10为底(一般用于描述频率和速率时
  • 系统整体的性能指标
  • 数据通路带宽:数据总线一次可以并行传输的位数
  • 吞吐量:可以处理的请求的数量(取决于主存的存取周期)
  • 响应时间:通常包括cpu运行时间+等待时间
  • 系统整体的性能指标(动态测试)
  • 基准程序

数据的保存方式

进制转换

定点数表示

  • 与浮点数的区别:定点数的小数点位置不会动
  • 分类:无符号数、有符号数(原码、反码、补码、移码)
  • 无符号数的原码表示:无符号bit,真值表示范围较大($0\sim2^n-1$)
  • 有符号数的原码表示
    • 小数点不占实际bit
    • 定点整数组成:[符号,尾数,小数点],在小数点前的数值,从右到左,以$2^0$开始增长
    • 定点小数组成:[符号,小数点,尾数],在小数点后的数值,从左到右,以$2^{-1}$开始减小
    • 定点整数范围:$-(2^{n-1}-1)\sim(2^{n-1}-1)$
    • 定点小数范围:$-(1-2^{1-n})\sim(1-2^{1-n})$
  • 原码->反码:若符号位为1(正数),则不变;若符号位为0(负数),则按位取反
  • 反码->补码:若符号位为1(正数),则不变;若符号位为0(负数),则反码+1(进位可以进到符号位,即溢出)
  • 补码->移码:补码的符号位取反,注意,不能用来表示小数
  • 原码和反码中,真值0有两种表示形式;补码和移码中,真值0只有一种表示形式
  • 加减法中的模理论:
  • 同余:进行相同的模运算,将余数相同的数称作“在mod x下同余”
  • 模的确定:如果机器位长为xbit,则会自然地完成$\mod2^x$
  • 补码的原始定义:补码=模-a的绝对值
  • 因此ALU用加法器来代替减法器
  • 符号扩展与零扩展:略

加法器

  • 半加器
  • 全加器
  • 串行进位加法器(行波进位)
  • 并行进位加法器(超前进位)

ALU

  • 控制信号:与ALU支持的运算个数相关,如果支持k种功能,则控制信号的个数$m\ge\lceil\log_2k\rceil$
  • ALU计算位数:机器字长=ALU计算位数
  • 标志位:ZF(运算结果是否为0)、SF(有符号数运算结果的正负)、OF(有符号数运算是否溢出)、CF(无符号数运算是否溢出)。这些信息会被送入PSW程序状态字寄存器/FR标志寄存器中,有时会进行软件处理。
  • 加法/减法:略
  • 移位:略
  • 原码乘法
  • X保存被乘数
  • ACC保存乘积高位(使用前必须置0),MQ保存乘积低位或乘数。计算过程中,[ACC,MQ]保存乘法的部分积
  • A(1bit)乘B(nbit):如果A为0,则结果为0;如果A为1,则结果为B
  • 数值的确定
    • A和B两者的绝对值来进行计算
    • 流程:乘法加法最后移位,即先将1bit乘法的结果加在[ACC,MQ]上,然后将[ACC,MQ]逻辑右移1位
  • 符号位的确定
    • A与B相乘的符号位为:A的符号位$\bigoplus$B的符号位
  • 补码乘法
  • 原码除法
  • X保存除数
  • ACC保存被除数或余数(使用前必须置0),MQ保存商。计算过程中,[ACC,MQ]保存除法的部分商
  • 数值的确定
  • 符号位的确定
    • A与B相除的符号位为:A的符号位$\bigoplus$B的符号位
  • 补码除法

浮点数

  • 组成:阶码(阶符、阶码数值部分)、尾数(数符、尾数数值部分)
  • 阶码E:是用补码/移码表示的定点整数。它反映小数点的实际位置->浮点数的表示范围
  • 尾数M:是用原码/补码表示的定点小数。它反映浮点数的精度
  • 阶码的底r:通常是2
  • 对应真值
  • $r^E\times M$
  • 比如有$2^{3D}\times0.1011B$中,实际上是把$0.1011B$向左移3bit(乘2==左移)
  • 浮点数规格化:通过左/右移,使得尾数的最高位一定是有效的(那个bit一定要为1)
  • 左规:若尾数非规格化时,进行左移1bit,同时阶码-1,直到规格化
  • 右规:若尾数溢出(双符号位为01或10)时,进行右移1bit,同时阶码+1,直到不溢出
  • 规格化后的表示范围:略(原码和补码)
  • 浮点数加法/减法

数据的存储和排列