计算机组成原理——篇二

导学

  • 这部分从具体的硬件组成入手,了解计算机的工作流程:
    jizu1

计算机总线

  • 总线对于计算机类似于人体的血管,在各个设备和组件之间传输数据
    • 统一说法:设备包括不同计算机、输入输出设备(IO)、内部组件,具体是哪部分还要看场景

概述

  • 总线的作用:解决不同设备之间的通信问题
    jizu14
  • 可以分两类:外部总线和内部总线
  • 外部总线:
  • 包括PCI总线(外设插槽)、USB(通用串行总线)、ISA总线等
  • USB是计算机对外连接的接口,不同的设备可以通过此接口连接,也就促使了外围接口的标准统一
  • 内部总线:
  • 片内总线:
    • 芯片内部的总线(CPU)
    • 寄存器之间、寄存器和控制运算器传输数据
  • 系统总线
    • 计算机各设备之间传递数据,包括数据、地址、控制总线
      jizu15
    • 数据总线
      • 双向传输各个部件的数据信息
      • 总线位数(宽度):32位/64位;是关键参数
    • 地址总线
      • 存储器(内存)寻址
      • 地址总线的位数与存储单元大小(例如32比特)有关,决定了寻址范围
    • 控制总线
      • 组件间发出各种控制信号(指令)

仲裁

  • 解决不同设备之间争夺总线资源的问题
  • 仲裁方法
    • 链式查询:
      • 所有设备通过一根请求线(BR)连接仲裁控制器,使用总线时发出申请
      • 总线空闲时,允许线(BG)会链式查询设备,将总线分配给优先级最高的设备
      • 总线分配后,会通过忙线(BS)将请求忙发送给总线,标志总线被占用
      • 电路复杂度低,仲裁方式简单
      • 缺点:优先级低(离控制器远)的设备难以获得使用权
        jizu16
    • 计时器定时查询
      • 仲裁控制器对设备编号,并使用计数器累计计数
      • 接收到仲裁信号(申请)后,通过设备地址线往所有设备发出计数值
      • 计数值与设备编号一致,则获得使用权
      • 如图:经过几次查询,此时计数器为3,设备3发起申请时会获得使用权
      • 注:计数从上一次的终点开始,优先级相等;计数从头开始,优先级同链式查询
        jizu17
    • 独立请求
      • 每个设备均有BR和BG总线独立连接仲裁器,可单独发送/接收信号
      • 仲裁器按优先级分配使用权
      • 优点:响应速度快,优先顺序可动态改变
      • 缺点:连线多,控制复杂
    • 小结一下:
      jizu18
    • 注:“总线忙”信号的建立者是获得总线控制权的那个设备

输入输出设备

  • 字符输入设备:键盘
  • 图像输入设备:鼠标、数位板、扫描仪
  • 图像输出设备:显示器、打印机、投影仪
  • 当然,上面的并不重要,关键在于如何设计通用的输入输出接口?
    • 是否已连接?
    • 是否已启动?
    • 如何向设备发送数据?
    • 如何读取数据?
    • 设备是否被占用?
  • 基于上面的问题,现今的设计方案如下:
    • 布线:数据线、状态线、命令线、设备选择线
    • 数据线:IO设备与主机交换数据
    • 状态线:IO状态向主机报告(连接和占用情况)
    • 命令线:CPU向设备发送命令(读写、启停)
    • 选择线:主机选择IO设备(选择地址)
  • CPU与IO的通信方法
    • 程序中断:外围IO设备就绪时,向CPU发出中断信号,CPU有专门电路响应
      jizu19
    • DMA(直接存储器访问):
      • 直接连接内存与IO设备、存储器之间,批量传输数据
      • 工作时无需CPU参与控制
      • 当然,需要DMA提出总线接管请求和发出结束信号(CPU让出总线)
        jizu20
    • 目的是不变的:解决CPU和IO速度不匹配的问题,尽量提高CPU效率

存储器概览

  • 存储器的分类和结构

分类

  • 按存储介质分:半导体存储器和磁存储器
    jizu21
  • 按存储方式分类:RAM(随机存储器)、ROM(只读)、串行存储器
    jizu22

层次结构

  • 一般考虑如下因素:
    • 读写速度:例如5400转/分钟(r/min)
    • 存储容量:例如2T
    • 价格:位价(每比特位价格)
    • 这些直接影响着存储结构的设计
  • 存储器层次结构:
    jizu25
  • 也可表示为:缓存-主存主存-辅存层次
    jizu24
    • 缓存是为了解决CPU与内存(主存)速度不匹配的问题
    • 辅存是为了解决主存容量不足的问题(虚拟内存),主要是磁盘
  • 局部性原理
    • CPU访问存储器时,无论是存取指令还是数据,所访问的存储单元都趋于聚集在一个较小的连续区域中

主存

  • 主存一般指内存,由RAM(Random Access Memory)组成
  • RAM通过电容存储数据,每隔一段时间必须刷新一次
  • 如果掉电,所有数据会丢失
  • 主存的组成、数据的读写通路如下图:
    jizu25
  • 不同操作系统的差别:
    jizu26

辅存

  • 主要是磁盘,实物和示意图:
    jizu27
  • 表面是可磁化的硬磁特性材料
  • 磁头径向运动读取信息
  • 磁头的调度有特定的算法:
    • 规定:最外层磁道编号为1,向内递增
    • 先来先服务算法
      • 顾名思义,按照进程的访问顺序依次读取磁道
    • 最短寻道时间优先算法
      • 每次找到距当前磁头最近的磁道
    • 扫描算法(电梯算法):
      • 磁头每次只往一个方向运动,到达尽头再反向移动
      • 靠后的磁道先访问,不公平
    • 循环扫描算法
      • 只往一个方向运动(外向内),到达最内层后回到最外层,再开始访问

高速缓存

  • 基本概念
    • 字:存放在一个存储单元中的二进制代码组合
    • 字块:存储在连续存储单元中的一组字(一个单元)
    • 字地址:前m位指定字块的地址,后b位指定字在字块中的地址;2m=M,2b=B
      jizu28
    • 计组的一些内容有很细节的概念,不理清楚越学越糊涂;还要注意问题的一般场景,例如我们一般先知道MB再求mb,不要无端的给自己找麻烦
    • 上面是主存的划分,缓存同理,用C代表其块数;和主存M的主要区别是C很小,B保持一致是为了方便以块为单位缓存
  • 问题场景
    • CPU需要的数据在缓存
    • CPU需要的数据不在缓存(不在缓存的要去主存拿)
  • 工作原理
    • 命中率:取一波数据时访问Cache的次数(Nc)和总次数(Nc+Nm)之比,定为h
    • 访问主存时间(tm)和访问缓存时间(tc
    • 访问Cache-主存系统平均时间:ta=htc+(1-h)tm
    • 看个例子:
      jizu29
      jizu30
    • 访问效率:
      jizu31
    • 平均访问时间:
      jizu32
  • 为了尽可能的使用缓存,需要合适的缓存替换策略
    • 先进先出算法(FIFO)
      • 优先替换掉最先进入缓存字块
    • 最不经常使用算法(LFU)
      • 淘汰掉最不经常使用的字块(计数器)
      • 因此需要额外空间记录字块使用频率
    • 最近最少使用算法(LRU)
      • 优先淘汰一段时间内没有使用的字块
      • 关键在实现方法,得到最近最少使用块
      • 一般使用双向链表,每次新插入数据到链表的头部,每次缓存命中(即数据被访问),则将数据移到链表头部;那么当链表满的时候,就将链表尾部的数据丢弃
      • 常借助甘特图推算

指令系统

  • 机器指令形式:操作码+地址码
    • 操作码:指明指令所要完成的操作,操作码的位数决定了操作种类数
    • 地址码:给出操作数或操作数的地址,分三地址、二地址和一地址指令
      jizu33
    • 还有零地址指令:无地址码,一般是空操作、停机操作、中断返回操作等
  • 指令类型(操作码决定)
    • 数据传输
      • 寄存器之间、寄存器与存储单元之间、存储单元之间
      • 数据读写、交换地址、清零置一等
    • 算术逻辑
      • 加减乘除、与非
    • 移位操作
      • 数据左移(x2)、右移(/2)
    • 控制指令
      • 中断、空操作、停机等
  • 指令寻址方式(是整个指令;也要区别指令和数据)
    • 顺序寻址:按指令存放顺序依次执行
    • 跳跃寻址:遇到JMP指令时
      jizu34
  • 操作数寻址(地址码)
    • 立即寻址:指令中带着操作数
    • 直接寻址:直接给出操作数所在主存地址
    • 简介寻址:地址码给出的是操作数地址的地址:
      jizu36
    • 这部分常考,对比如下:
      jizu37

CPU控制器

  • 控制器是协调和控制计算机运行的
    jizu39
  • 程序计数器
    • 存储下一条指令的地址
    • 一般情况下,指令被拿出时,自动+1(这里的1是一个指令字长)
  • 时序发生器
    • 发送时序脉冲
    • CPU依据不同的时序脉冲有节奏的工作
  • 指令译码器
    • 翻译操作码,转换成对应的控制信号
    • 控制传输地址码对应的数据
    • 这是机器指令—>微指令—>微操作的关键
  • 指令寄存器
    • 从主存或高速缓存取指令
  • 主存地址寄存器
    • 保存当前要访问的内存地址
  • 主存数据寄存器
    • 当前要读写的数据
  • 通用寄存器
    • 暂存指令和数据
    • 保存ALU中间结果
    • 容量比一般寄存器大

运算器

  • 进行数据加工运算
    jizu40
  • 数据缓冲器
    • 输入缓冲暂存外设送来的数据
    • 输出缓冲暂存送往外设的数据
  • ALU(算术逻辑单元)
    • 位运算(与或非、移位)
    • 算术运算
      jizu41
    • 这部分很重要(常考),后面的计算中还会介绍
  • 状态字寄存器(PSW)
    • 存放运算状态:条件码、进位、溢出、正负
    • 存放运算控制信息:跟踪标记位、允许中断位

指令执行过程

  • 包括三个步骤:取、分析、执行
  • 取指令:指令和数据取出后放在缓存(不是缓冲)
  • 分析指令:译码器分析指令发出控制信号(微操作)
  • 执行指令:装载数据,ALU处理,记录运算状态,输出结果
    jizu44
  • 为了让控制器和运算器同时工作,产生了**CPU流水线设计**
    • 应用了时分复用思想,不用等当前指令结束,释放的控制器可分析下一条指令
      jizu45
  • 有时会考察计算流水线设计的时间性能
    • 假设时间片为t,且认为三个阶段的耗时大致相同:
      jizu46

小结

  • 这一篇从计算机的组成部件入手,主要了解了总线、存储器和指令的执行流程
  • 有些具体的细节可以在熟悉整个工作流程之后再探究,提纲挈领很重要!
  • 下一篇详细了解数据运算的基本知识

猜你喜欢

转载自blog.csdn.net/Yf_Roy/article/details/115048294