计算机的总线

总线的概述

举个栗子:

USB-> Universal Serial Bus(通用串行总线)

  1. 提供了对外连接的接口
  2. 不同设备可以通过USB接口进行连接
  3. 连接的标准,促使外围设备接口的统一

总线除了上面的USB,还有PCI总线ISA总线THunderbolt总线等等

image-20220102095929040

在没有总线时候,每个设备之间要互相连接,非常复杂

出现总线之后:

image-20220102100101016

总线的分类

片内总线

高集成度芯片内部的信息传输线
  1. 芯片内部的总线
  2. 寄存器与寄存器之间
  3. 寄存器与控制器、运算器之间

image-20220102100332987

系统总线

CPU、主内存、IO设备、各组件之间的信息传输线

image-20220102100404824

数据总线

一般与CPU位数相同(32位,64位)
  1. 双向传输各个部件的数据信息
  2. 数据总线的位数(总线宽度)是数据总线的重要参数

地址总线

地址总线位数=n,寻址范围:0~$2^n$
  1. 指定源数据或目的数据在内存中的地址
  2. 地址总线的位数与存储单元有关

控制总线

  1. 控制总线是用来发出各种控制信号的传输线
  2. 控制信号经由控制总线从一个组件发给另外一个组件

    1. 比如从CPU发送到键盘
  3. 控制总线可以监视不同组件之间的状态(就绪/未就绪)

总线的仲裁

仲裁就是为了解决不同设备使用总线的先后冲突问题

我们有以下几种方法:

链式查询

image-20220102101443372

假设设备2需要使用总线,就像仲裁控制器发送请求,得到请求后,会先发给设备1,看他用不用,他不用,就到接下来给设备2,发现设备2使用。同理,设备1和2同时发送,设备1先获取资格。

好处: 电路复杂度低,仲裁方式简单(串联的方式)
坏处: 优先级低的设备难以获得总线使用权

计时器定时查询

  1. 仲裁控制器对设备编号并使用计数器累计计数
  2. 接收到仲裁信号后,往所有设备发出计数值
  3. 计数值与设备编号一致则获得总线使用权

image-20220102101935904

设备3要使用,顺着仲裁控制线请求,控制器收到后同时给3个设备发1,设备1没有使用,继续+1,设备2没有使用,继续+1,设备3使用,获得总线的使用权,(每次+1,都给这几个设备发送)

独立请求

  1. 每个设备均有总线独立连接仲裁器
  2. 设备可单独向仲裁器发送请求和接收请求
  3. 当同时收到多个请求信号,仲裁器有权按优先级分配使用权

image-20220102102223847

好处:响应速度快,优先顺序可动态改变
坏处:设备连线多,总线控制复杂

计算机的输入输出设备

常见的输入输出设备

字符输入设备

键盘

薄膜键盘
机械键盘
黑轴
红轴
青轴
茶轴

图像输入设备

鼠标

数位板

扫描仪

图像输出设备

显示器

打印机

投影仪

输入输出接口的通用设计

数据线

是I/O设备与主机之间进行数据交换的传送线

单向传输数据线
双向传输数据线

状态线

  1. IO设备状态向主机报告的信号线
  2. 查询设备是否已经正常连接并就绪
  3. 查询设备是否已经被占用

命令线

  1. CPU向设备发送命令的信号线
  2. 发送读写信号
  3. 发送启动停止信号

设备选择线

  1. 主机选择l/O设备进行操作的信号线
  2. 对连在总线上的设备进行选择

例如对U盘进行操作

CPU与IO设备的通信

CPU速度与IO设备速度不一致

程序中断

提供低速设备通知CPU的一种异步的方式
CPU可以高速运转同时兼顾低速设备的响应
  1. 当外围IO设备就绪时,向CPU发出中断信号
  2. CPU有专门的电路响应中断信号

image-20220102103544546

注意:响应中断不一定是及时的。

DMA(直接存储器访问)

DMA直接连接主存与lO设备
DMA工作时不需要CPU的参与

image-20220102103813375当主存与IO设备交换信息时,不需要中断CPU,可以提高CPU的效率

硬盘,显卡都使用

计算机存储器

存储器的分类

按存储介质分类:

半导体存储器

内存,U盘,固态硬盘

磁存储器

磁带,磁盘

_

按存取方式分类:

随机存储器(RAM)

随机读取

与位置无关

串行存储器

与位置有关

按顺序查找

只读存储器(ROM)

只读不写

存储器的层次结构

读写速度↑,存储容量↑,价格↓

容量+价格 => 位价:每比特位价格

image-20220102105119881

容量从上到下增加

主存是上面提到的RAM与ROM

image-20220102105214747

缓存-主存层次

原理:局部性原理
实现:在CPU与主存之间增加一层速度快(容量小)的Cache
目的:解决主存速度不足的问题

局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。

image-20220102110157195

主存-辅存层次

原理:局部性原理
实现:主存之外增加辅助存储器(磁盘、SD卡、U盘等)
目的:解决主存容量不足的问题

你有20G游戏,但是只有8G主存,根据局部性原理,把游戏当前需要的数据放在主存里,不需要的放在辅存里

主存储器

就是内存

  1. RAM(随机存取存储器:Random Access Memory
  2. RAM通过电容存储数据,必须隔一段时间刷新一次
  3. 如果掉电,那么一段时间后将丢失所有数据

image-20220102111210257

32位系统,$2^(32)$=4GB

64位系统,$2^(64)$=$2^(34)$GB

辅助存储器

磁盘

image-20220102130908608

image-20220102131047250

  1. 表面是可磁化的硬磁特性材料
  2. 移动磁头径向运动读取磁道信息

磁盘调度算法

我们举下面的例子,看看磁道是怎么移动的。

image-20220103130738689

先来先服务算法
按顺序访问进程的磁道读写需求

1->4->2->3->1->5

最短寻道时间优先
与磁头当前位置有关
优先访问离磁头最近的磁道

4->5->3->2->1->1

4->3->2->1->1->5

扫描算法(电梯算法)
每次只往一个方向移动
到达一个方向需要服务的尽头再反方向移动

4->3->2->1->1->5

循环扫描算法
只能往一个方向读取

4->5->1->1->2->3

计算机的高速缓存

工作原理

先介绍以下概念:

字:是指存放在一个存储单元中的二进制代码组合

字块:存储在连续的存储单元中而被看作是一个单元的一组字

image-20220103133521461

一个字有32位

一个字块共B个字

主存共M个字块

$B*M$=主存总字数

$B*M*32$=主存总容量(bits)


字的地址包含两个部分

前m位指定字块的地址

后b位指定字在字块中的地址

image-20220103133724766

我们有$2^m=M$ $2^b=B$

因为m是字块的地址,这么多的m位,共组成了M个字块,b是字在字块里的地址,那么一个字块,就有 $2^b=B$个字。

image-20220103140728336

将主存对比缓存,我们发现:

  1. 存储的逻辑结构类似
  2. 缓存的容量较小
  3. 缓存的速度更快
  4. 缓存就是主存某些字块的复制

image-20220103140845428

一个字有32位
一个字块共B个字
缓存共C个字块

image-20220103141021970

CPU与缓存的关系:

  1. CPU需要的数据在缓存里
  2. CPU需要的数据不在缓存里

不在缓存的数据需要去主存拿

如何衡量CPU在缓存取成功的几率呢?

就有了命中率

访问主存次数:Nm
访问Cache次数:Nc

命中率$h=Nc/Nc+Nm$

工作原理:

  1. 命中率是衡量缓存的重要性能指标
  2. 理论上CPU每次都能从高速缓存取数据的时候,命中率为1

除了命中率,还有访问效率

image-20220103141613914

针对命中率和访问效率,为了他们更高,所以需要性能良好的缓存替换策略

高速缓存替换策略

当高速缓存里没有数据,就需要从主存载入所需数据

随机算法

随机选取

先进先出算法(FIFO)

把高速缓存看做是一个先进先出的队列

优先替换最先进入队列的字块

image-20220103142231024

最不经常使用算法(LFU)

优先淘汰最不经常使用的字块

需要额外的空间记录字块的使用频率

使用频率?访问一次就加1

image-20220103142315646

image-20220103142407325

最近最少使用算法(LRU)

优先淘汰一段时间内没有使用的字块

有多种实现方法,一般使用双向链表

把当前访问节点置于链表前面(保证链表头部节点是最近使用的)

image-20220103143038491

计算机的指令系统

机器指令的形式

组成部分:操作码和地址码

|操作码字段|地址码字段|

操作码

  1. 操作码指明指令所要完成的操作
  2. 操作码的位数反映了机器的操作种类

地址码

  1. 地址码直接给出操作数或者操作数的地址(指定数据的地址,使得cpu可以运算)
  2. 分三地址指令、二地址指令和一地址指令

三地址指令

image-20220107101827564

addr3通常是存储addr1和addr2的运算结果的

(addr1) OP (addr2) -> addr3

二地址指令

image-20220107101944879

(addr1) OP (addr2) -> (addr1)或(addr2)

结果存储addr1或addr2

一地址指令

image-20220107102358663

(addr1)OP->(addr1) 自己对自己操作
(addr1)OP(ACC) -> (addr1) 自增行为

零地址指令

  1. 在机器指令中无地址码
  2. 空操作、停机操作、中断返回操作等

机器指令的操作类型

数据传输

  1. 寄存器之间、寄存器与存储单元、存储单元之间传送
  2. 数据读写、交换地址数据、清零置一等操作

算术逻辑操作

  1. 操作数之间的加减乘除运算
  2. 操作数的与或非等逻辑位运算

移位操作

  1. 数据左移(乘2)、数据右移(除2)
  2. 完成数据在算术逻辑单元的必要操作

控制指令

等待指令、停机指令、空操作指令、中断指令等

机器指令的寻址方式

指令寻址

顺序寻址、跳跃寻址

image-20220107105723757

顺序寻址:正常执行,从101开始

跳跃寻址:到105这又跳跃到102

数据寻址

立即寻址

  1. 指令直接获得操作数
  2. 无需访问存储器

image-20220107105921740

比如说这个6直接放在操作数里

直接寻址

  1. 直接给出操作数在主存的地址
  2. 寻找操作数简单,无需计算数据地址

image-20220107110044471

间接寻址

指令地址码给出的是操作数地址的地址

需要访问一次或多次主存来获取操作数

image-20220107123942920

image-20220107124052626

计算机的控制器

控制器是协调和控制计算机运行的。

image-20220107124221211

程序计数器

  1. 程序计数器用来存储下一条指令的地址
  2. 循环从程序计数器中拿出指令
  3. 当指令被拿出时,指向下一条指令

时序发生器

  1. 电气工程领域,用于发送时序脉冲
  2. CPU依据不同的时序脉冲有节奏的进行工作

指令译码器

  1. 指令译码器是控制器的主要部件之一
  2. 计算机指令由操作码和地址码组成
  3. 翻译操作码对应的操作以及控制传输地址码对应的数据

指令寄存器

  1. 指令寄存器也是控制器的主要部件之一
  2. 从主存或高速缓存取计算机指令

主存地址寄存器

保存当前CPU正要访问的内存单元的地址

使用地址总线与主存进行通信。

主存数据寄存器

保存当前CPU正要读或写的主存数据

使用数据总线与主存进行通信。

通用寄存器

  1. 用于暂时存放或传送数据或指令
  2. 可保存ALU的运算中间结果
  3. 容量比一-般专用寄存器要大

计算机的运算器

运算器是用来进行数据运算加工的

image-20220107144706672

数据缓冲器

  1. 分为输入缓冲和输出缓冲
  2. 输入缓冲暂时存放外设送过来的数据
  3. 输出缓冲暂时存放送往外设的数据

ALU

  • ALU: 算术逻辑单元,是运算器的主要组成
  • 常见的位运算(左右移、与或非等)
  • 算术运算(加减乘除等)

image-20220107145011261

注:A,B是输入,F是输出,K是n个控制器

状态字寄存器

  • 存放运算状态(条件码、进位、溢出、结果正负等)
  • 存放运算控制信息(调试跟踪标记位、允许中断位等)

通用寄存器

  • 用于暂时存放或传送数据或指令
  • 可保存ALU的运算 中间结果
  • 容量比一般专用寄存器要大

计算机指令的执行过程

指令执行过程

image-20220108143416992

取指令和分析指令,是CPU在工作,执行指令是运算器在工作,这说明运算器和控制器不能同时工作,导致CPU的综合利用率并不高

CPU的流水线设计

  • 类似工厂的装配线
  • 工厂的装配线使得多个产品可以同时被加工
  • 在同一个时刻,不同产品均位于不同的加工阶段

image-20220108143658650

变为

image-20220108143707608

image-20220108143757077

版权属于:染念
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2022年01月08日 14:44
4
发表评论


179 文章数
668 评论量
4 分类数
183 页面数
已在风雨中度过 7年47天1小时32分
目录
来自 《计算机原理组成篇》
© 2024 染念Blog
浙ICP备19020194号-1
暗黑模式
暗黑模式
评论
返回顶部
© 2024 染念Blog
浙ICP备19020194号-1
暗黑模式
暗黑模式
评论
返回顶部