计算机组成
计算机的总线
总线的概述
- 提供了对外连接的接口
- 不同设备可以通过USB接口进行连接
- 连接的标准,促使外围设备接口的统一
作用:解决不同设备之间的通信问题
总线的分类
片内总线
高集成度芯片内部的信息传输线
- 芯片内部的总线
- 寄存器与寄存器之间
- 寄存器与控制器、运算器之间
系统总线
CPU、主内存、IO设备、各组件之间的信息传输线
数据总线
一般与CPU位数相同(32位、64位)
- 双向传输各个部件的数据信息
- 数据总线的位数(总线宽度)是数据总线的重要参数
地址总线
地址总线位数=n,寻址范围:0~𝟐𝒏
- 指定源数据或目的数据在内存中的地址
- 地址总线的位数与存储单元有关
控制总线
- 控制总线是用来发出各种控制信号的传输线
- 控制信号经由控制总线从一个组件发给另外一个组件
- 控制总线可以监视不同组件之间的状态(就绪/未就绪)
总线的仲裁
为了解决总线使用权的冲突问题
总线的仲裁方法
链式查询
- 好处:电路复杂度低,仲裁方式简单
- 坏处:优先级低的设备难以获得总线使用权
- 坏处:对电路故障敏感
计时器定时查询
- 仲裁控制器对设备编号并使用计数器累计计数
- 接收到仲裁信号后,往所有设备发出计数值
- 计数值与设备编号一致则获得总线使用权
独立请求
- 每个设备均有总线独立连接仲裁器
- 设备可单独向仲裁器发送请求和接收请
- 当同时收到多个请求信号,仲裁器有权按优先级分配使用权
- 好处:响应速度快,优先顺序可动态改变
- 设备连线多,总线控制复杂
计算机的输入输出设备
常见的输入输出设备
键盘、鼠标、显示器
输入输出接口的通用设计
数据线
- 是I/O设备与主机之间进行数据交换的传送线
- 单向传输数据线
- 双向传输数据线
状态线
- IO设备状态向主机报告的信号线
- 查询设备是否已经正常连接并就绪
- 查询设备是否已经被占用
命令线
- CPU向设备发送命令的信号线
- 发送读写信号
- 发送启动停止信号
- 主机选择I/O设备进行操作的信号线
- 对连在总线上的设备进行选择
设备选择线
CPU与IO设备的通信
CPU速度与IO设备速度不一致
程序中断
- 当外围IO设备就绪时,向CPU发出中断信号
- CPU有专门的电路响应中断信号
- 提供低速设备通知CPU的一种异步的方式
- CPU可以高速运转同时兼顾低速设备的响应
DMA(直接存储器访问)
- DMA直接连接主存与IO设备
- DMA工作时不需要CPU的参与
- 可以提高CPU的效率
设备: 硬盘、外置显卡
计算机存储器概览
存储器的分类
存储器的层次结构
局部性原理:是指CPU访问存储器时,无论是存取指令 还是存取数据,所访问的存储单元都趋于聚集在一个 较小的连续区域中。
缓存-主存层次
- 原理:局部性原理
- 实现:在CPU与主存之间增加一层速度快(容量小)的Cache
- 目的:解决主存速度不足的问题
主存-辅存层次
- 原理:局部性原理
- 实现:主存之外增加辅助存储器(磁盘、SD卡、U盘等)
- 目的:解决主存容量不足的问题
计算机的主存储器与辅助存储器
主存储器——内存
- RAM(随机存取存储器:Random Access Memory)
- RAM通过电容存储数据,必须隔一段时间刷新一次
- 如果掉电,那么一段时间后将丢失所有数据
辅助存储器——磁盘
- 表面是可磁化的硬磁特性材料
- 移动磁头径向运动读取磁道信息
磁盘调度算法
先来先服务算法
按顺序访问进程的磁道读写需求
最短寻道时间优先算法
- 与磁头当前位置有关
- 先访问离磁头最近的磁道
扫描算法(电梯算法)
- 每次只往一个方向移动
- 到达一个方向需要服务的尽头再反方向移动
循环扫描算法
计算机的高速缓存
CPU与主存的速度不匹配
高速缓存的工作原理
- 字 是指存放在一个存储单元中的二进制代码组合
- 字块: 存储在连续的存储单元中而被看作是一个单元的一组字
- CPU需要的数据在缓存里
- CPU需要的数据不在缓存里
- 不在缓存的数据需要去主存拿
- 命中率是衡量缓存的重要性能指标
- 理论上CPU每次都能从高速缓存取数据的时候,命中率为1
命中率
访问效率:
高速缓存的替换策略
高速缓存的替换时机
随机算法
先进先出算法(FIFO)
- 把高速缓存看做是一个先进先出的队列
- 优先替换最先进入队列的字块
最不经常使用算法(LFU)
- 优先淘汰最不经常使用的字块
- 需要额外的空间记录字块的使用频率
最近最少使用算法(LRU)
- 优先淘汰一段时间内没有使用的字块
- 有多种实现方法,一般使用双向链表
- 把当前访问节点置于链表前面(保证链表头部节点是最近使用的)
计算机的指令系统
机器指令的形式
- 机器指令主要由两部分组成:操作码、地址码
- 操作码指明指令所要完成的操作
- 操作码的位数反映了机器的操作种类
- 地址码直接给出操作数或者操作数的地址
- 分三地址指令、二地址指令和一地址指令
- 零地址指令: 在机器指令中无地址码,空操作、停机操作、中断返回操作等
机器指令的操作类型
- 数据传输
– 寄存器之间、寄存器与存储单元、存储单元之间传送
– 数据读写、交换地址数据、清零置一等操作 - 算术逻辑操作
– 操作数之间的加减乘除运算
– 操作数的与或非等逻辑位运算 - 移位操作
– 数据左移(乘2)、数据右移(除2)
–完成数据在算术逻辑单元的必要操作 - 控制指令
– 等待指令、停机指令、空操作指令、中断指令等
机器指令的寻址方式
指令寻址
数据寻址
- 立即寻址
– 指令直接获得操作数
– 无需访问存储器 - 直接寻址
– 直接给出操作数在主存的地址
– 寻找操作数简单,无需计算数据地址 - 间接寻址
– 指令地址码给出的是操作数地址的地址
– 需要访问一次或多次主存来获取操作数
计算机的控制器
控制器是协调和控制计算机运行的
程序计数器
- 程序计数器用来存储下一条指令的地址
- 循环从程序计数器中拿出指令
- 当指令被拿出时,指向下一条指令
时序发生器
- 电气工程领域,用于发送时序脉冲
- CPU依据不同的时序脉冲有节奏的进行工作
指令译码器
- 指令译码器是控制器的主要部件之一
- 计算机指令由操作码和地址码组成
- 翻译操作码对应的操作以及控制传输地址码对应的数据
指令寄存器
- 指令寄存器也是控制器的主要部件之一\
- 从主存或高速缓存取计算机指令
主存地址寄存器
- 保存当前CPU正要访问的内存单元的地址
主存数据寄存器
- 保存当前CPU正要读或写的主存数据
通用寄存器
- 保存当前CPU正要读或写的主存数据
- 用于暂时存放或传送数据或指令
- 可保存ALU的运算中间结果
- 容量比一般专用寄存器要大
计算机的运算器
运算器是用来进行数据运算加工的
数据缓冲器
- 分为输入缓冲和输出缓冲
- 输入缓冲暂时存放外设送过来的数据
- 输出缓冲暂时存放送往外设的数据
ALU
- ALU:算术逻辑单元,是运算器的主要组成
- 常见的位运算(左右移、与或非等)
- 算术运算(加减乘除等)
状态字寄存器
- 存放运算状态(条件码、进位、溢出、结果正负等)
- 存放运算控制信息(调试跟踪标记位、允许中断位等
通用寄存器
- 用于暂时存放或传送数据或指令
- 可保存ALU的运算中间结果
- 容量比一般专用寄存器要大
计算机指令的执行过程
指令执行过程
CPU的流水线设计
运算器和控制器分开工作,CPU的综合利用率并不高
- 类似工厂的装配线
- 工厂的装配线使得多个产品可以同时被加工
- 在同一个时刻,不同产品均位于不同的加工阶段
计算机的异构计算设备
图像处理器(GPU)
- 又称显示核心、视觉处理器、显示芯片
- 擅长执行复杂的数学和几何计算
现场可编程门阵列(FPGA)
- 是一种专用集成电路,诞生于1985年
- 电路级别的设备,属于硬件层面的开发
- AI人工智能的大热,FPGA逐渐走进大众的视野