[专业课]——计算机组成复习

概述(1.5小时)

计算机系统:

  • 硬件的发展:
    • 电子管
    • 晶体管
    • 中小规模集成电路
    • 超大规模集成电路
  • 硬件的组成:
    • 输入输出设备(I\O设备)
    • 存储器
      • 存储器的性能指标:
        • MAR的位数反映了存储单元的个数
        • MDR的位数反应了存储单元存储字的字长
        • 总存储大小:个数 * 字长(MAR32位,MDR8位,2^32 x 8 = 34,359,738,368 bit = 4,294,967,296 B = 4,194,304 KB = 4,096 MB = 4GB)
    • CPU
      • 运算器
      • 存储器
      • CPU的性能指标:
        • 主频(HZ),CPU内数字脉冲信号振荡的频率
        • 时钟周期(S),CPU内数字脉冲信号振荡一次需要的时间
        • CPI:执行一条指令需要的时钟周期数
          • CPU执行时间 = 指令数 x CPI / 主频
        • IPS:每秒执行多少条指令=主频 / CPI
        • FLOPS:每秒执行多少次浮点运算
  • 性能:
    • 存储器的性能
    • CPU的性能
    • 系统整体的性能
      • 数据通路的带宽:数据总线一次能够并行传送信息的位数–>数据字长
      • 吞吐量: 单位时间能够处理请求的数量
      • 响应时间:用户发送请求到请求得到响应的等待时间
      • 机器字长:计算机内部一次可以处理的二进制的位数,也等于整数运算的数据通路的宽度,也就等于ALU、通用寄存器(X)的宽度
  • 现代计算机结构:
    在这里插入图片描述
    • 主存储器:
      • 存储体
        • 存储单元:存储体由存储单元构成
        • 存储字:一个存储单元中存储的二进制代码
        • 存储字长:二进制代码的位数(16、32、64…)
      • MAR(Memory address register:存储地址寄存器):2^MAR的位数 = 存储单元的个数(4位->16个存储单元)
      • MDR(Memory data register:存储数据寄存器):MDR的位数=存储单元的字的字长(16位->16的字长->1个字长度为16bit(2个字节(B)))
      • 读:我向MAR提供地址,存储器对应位置的数据先传输到MDR,我从MDR取数据
      • 写:我向MAR提供地址,向MDR提供数据,存储器把数据写入到对应地址
    • 运算器:
      • ACC:累加计数器
      • MQ:乘商寄存器
      • X:通用寄存器
      • ALU:算数逻辑单元
    • 控制器
      • CU:控制单元
      • IR:指令寄存器
      • PC :程序计数器
    • 汇总:
      在这里插入图片描述
  • 三种级别的语言:
    • 高级语言-》高级语言机器
    • 汇编语言-》汇编语言机器
    • 中间有一个操作系统机器
    • 机器语言-》机器语言机器
    • 微指令-》微程序机器
    • 高级语言向机器语言转换的两种方式
      • 编译器:将源程序一次性翻译成可执行的机器语言,再执行
      • 解释器:翻译一次、执行一次

数据的表示和运算(3小时没学完)

进位计数制:

  • 基数:每个数码位用到的符号个数
  • 转换:
    • 任意进制-》十进制 √

    • 十进制-》任意进制:
      (整数部分:除基取余法)
      在这里插入图片描述
      (小数部分:乘基取整法)
      在这里插入图片描述

    • 二进制《-》八进制:
      在这里插入图片描述

  • 二进制《-》十六进制
    在这里插入图片描述

字符和字符串:

  • 英文
    • 0-31:控制字符
    • 32-126:可印刷字符
    • 127:delete
  • 中文
    • 区位码:0-93 0-93
    • 国标码:+32个控制符,即区位码+2020H(20H=32)
    • 汉字内码:首位0-》1,即国标码+8080H(80H=128)

原、反、补、移:

  • 补码的作用:用补码表示负数,进行计算,使减法变为加法
  • 移码的作用:方便比较大小

定点数:

  • 定点数的表示:
    • 无符号数(整数): n位:0-2^n-1(2的n次方个数)
    • 有符号数:
      • 整数(小数点隐藏在末尾):
        • 用原码表示:n+1位:-(2的n次方-1) - (2的n次方-1)(2的n+1次方-1个数,因为1000…和0000都表示0)
        • 用反码表示:正数的原码不变,负数的原码数值位取反
        • 用补码表示:原码的1000…和0000…都表示0,而1000…所对应的补码=0000…所对应的补码,所以把1000…这个补码表示大小-2^n,故其范围为:-(2的n次方) - (2的n次方-1)
      • 小数(小数点隐藏在符号位后)
        • 用原码表示:n+1位:-(1-2的-n次方)-(1-2的-n次方)(也有+0和-0两种表示)
        • 用反码表示:正数的原码不变,负数的原码数值位取反
        • 用补码表示:原码的1.000…和0.000…都表示0,而1.000…所表示的补码=0.000…所对应的补码,所以把1.000…这个补码表示大小-1,故其范围为-1 - (1 - 2的-那次放)
    • 原-》补,补-》原一摸一样,都是正不变、负数值位取反+1
    • 移码:补的符号位取反

定点数的运算:

  • 移位运算:
    • 算数移位:
      • 正数:
        • 原、反、补,左右移都补0
      • 负数:
        • 原码:左右移动补0
        • 反码:左右移动补1
        • 补码:左移补低位补0,右移高位补1
    • 逻辑移位:无符号,补0
    • 循环移位:
  • 加减运算:
    • 溢出:
      • 上溢:正+正 -》负
      • 下溢:负+负 -》正
    • 判断溢出:
      • 方法一:
        在这里插入图片描述
      • 方法二:
        在这里插入图片描述
      • 方法三:
        在这里插入图片描述
  • 类型转换(以补码形式):
    • 有符号-》无符号,直接转
    • 长字长-》短字长,高位直接截断
    • 短字长-》长字长,高位补符号位(正时,补0;负时,补码高位与反码保持一致,补1)

数据的存储与排序:

  • 小端:最高有效字节放在高地址,最低有效字节放在低地址
  • 大端:最高有效字节放在低地址,最低有效字节放在高地址
  • 边界对齐:空间换时间
  • 边界不对齐:时间换空间

浮点数:

  • 组成:阶符、阶码的数值部分、数符、尾数的数值部分
  • 规格化:
    • 左规:尾数左移,阶码-1 (循环多次)
    • 右规:尾数右移,阶码+1(循环多次)
    • 原码的规格化:
      • 正数:0.1XX,最小为1/2,最大为1-2的-n次方
      • 负数:1.1XX,最小为2的-n次方-1,最大为-1/2
    • 补码的规格化:
      • 正数:和原码一致
      • 负数:1.0XX,最小为-1,最小为-1/2-2的-n次方
        在这里插入图片描述
        在这里插入图片描述

存储系统

存储器的层次化结构:

  • 寄存器
  • cache:为了解决CPU和主存的速度不匹配
  • 主存
  • 辅存:为了解决主存的容量不够
  • 外存
  • 从上往下,容量↑,访问速度↓,价格↓

存储器分类:

  • 介质:
    • 半导体
    • 磁性材料
  • 存取方式:
    • 相联存储器:既可以按照内容又可以按照地址访问
    • 随机(RAM):
      • DRAM:栅极电容,主存,破坏性读出,速度更慢。DRAM中的电荷一会儿就会消失,需要采取地址线复用,需要刷新:
        • 多久刷新一次?2ms
        • 每次刷新多少个存储单元? 行存储单元(n位地址,译码器需要2的n次方跟地址线,可分为行、列译码器,减小地址线个数,不过片选线要分成行通选+列通选)
        • 刷新方法:
          • 分散刷新
          • 集中刷新
          • 异步刷新
      • SRAM:双稳态触发器,cache,非破坏性读出,速度更快,不需要采取地址线复用
    • 顺序:磁带
    • 直接: 磁盘、光盘
  • 信息可更改性:
    • 读写
    • 只读(非易失)(ROM):
      • 掩膜式只读存储器(MROM):
      • 一次可编程只读存储器(PROM):
      • 可擦除可编程(RPROM):
      • 闪存(Flash:U盘)
      • 固态硬盘(SSD)
  • 信息可保存性:
    • 易失
    • 非易失

存储器的性能指标:

  • 存储容量:存储字数 x 存储字长
  • 单位成本:每一个位的价格
  • 数据传输率:数据带宽(字长)/ 存储周期(每存储一个字长需要的时间)
    • 存储周期 = 存取时间 + 恢复时间

存储芯片的组成:

  • 译码器:把输入的地址进行移码
  • 存储矩阵:nxm,n表示存储单元个数,m表示字长
  • 控制电路
  • 片选线
  • 读写线
  • 数据线
  • 地址线

存储器和CPU的链接:

  • 位拓展,充分利用CPU的数据宽度
    在这里插入图片描述

  • 字拓展,充分利用CPU的地址线(把地址线用于片选线)

    • 线选法(one-hot):n个高位地址线-》片选n个存储元
    • 译码片选法:n个高位地址线-》片选2^n个存储元
      在这里插入图片描述
  • 字位同时拓展:
    在这里插入图片描述

Cache:加快访问物理地址的速度

  • cache的性能分析:
    • cache和主存同时被访问:Hxt1 + (1-H)(t2)
    • 先访问cache再访问主存:Hxt1 + (1-H)(t1+t2)
  • cache和主存之间的映射:
    • 块: 考虑4MB的主存,按字节编址。假设一个块有1KB,则有2^12块。则将原来,4M–>22位的地址分成前12位的块号,和后10位的块内地址。
    • 映射关系:
      • 全相联映射(全):cache块中可能存放任意的主存块
      • 直接映射(直接):主存块号 % cache块号 --》放哪一块
      • 组相连映射(组间直接,组内全):将cache进行分组,主存块号 % cache组号–》放哪一组
    • 如何知道cache中存的是主存中的哪一块?
      • 标记位+有效位。
      • 特别的,如果是直接映射,第i块的主存块需要对cache块号进行取余,假设cache块号为2^n,则主存地址=块号 | 块内地址,而块号的后n位就是其所对应的cache块号,前面的就是cache中需要保存的标记位。
      • 同样的,如果是组相联映射,假设cache组号为2^n,则主存地址=块号 | 块内地址,而块号的后n为就是其所对应的cache的组号。
  • cache的替换算法(如果cache满了怎么办?直接映射不存在替换算法)
    • 随机算法
    • 先进先出算法:抖动现象:刚刚被换出的马上又被访问
    • 最近最少使用算法:
    • 最不经常使用算法:
  • cache的写策略
    • 能够命中:
      • 写回法:需要设置脏位,表明某cache块是否被修改,被修改的cache块只有被替换出时,才会写回
      • 全写法:实时同步
      • 写缓冲
    • 不能命中:
      • 写分配法:先读入,再改cache。cache和主存。
      • 非写分配法:直接写主存。cache之间
    • 一般写分配法和写回法搭配;非写分配法和全写法搭配。

虚拟存储:

  • 页式存储:把程序划分成和主存块大小一样大小的“页”,然后离散存储。此时对于一个程序而言,其逻辑地址的后n位表示表示页内地址,前几位表示页号。存在一个页表(主存),存放着页号到主存块号的映射,主存块号+页内地址=物理地址。
    • 快表:存放部分页表项,加快获得物理地址的速度
    • 页式虚拟存储器:辅存和主存之间的映射。通过页表来实现:
      • 通过程序的页号来访问页表项,一个页表项:
      • 有效位:当前页(块)是否在主存中
      • 脏位:当前页是否被修改过
      • 磁盘块号 or 主存块号
  • 段式存储:

Guess you like

Origin blog.csdn.net/jokerxsy/article/details/118419636