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