计算机组成原理-03-计算机的组成(一)

总线

总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。

为什么要有总线?

假设没有总线这种设计,计算机设备都是分散连接的,如下图:

image

此时如果新增了一个输入设备2,此时需要分别连接存储器、控制器、运算器,设备一多线路就会十分复杂。


image

有了总线之后,设备直接连接总线,使得计算机内部结构变得十分清晰,设备的添加和卸载也变得容易。


image

总线的分类

片内总线

**高集成度芯片内部的信息传输线**,用于连接寄存器与寄存器、寄存器和控制器&运算器之间。

系统总线

 CPU、主内存、IO设备、各组件之间的信息传输线。一般有三类:数据总线、地址总线、控制总线。
数据总线
双向传输各个部件的数据信息

数据总线的位数(总线宽度)是数据总线的重要参数,一般与CPU位数相同(32位、64位)
地址总线
指定源数据或目的数据在内存中的地址

地址总线的位数与存储单元有关

地址总线位数=n,寻址范围:0~^
控制总线
控制总线是用来发出各种控制信号的传输线

控制信号经由控制总线从一个组件发给另外一个组件

控制总线可以监视不同组件之间的状态(就绪/未就绪)

总线的仲裁

系统中多个设备或模块可能同时申请对总线的使用权,为避免产生总线冲突,需由总线仲裁机构合理地控制和管理系统中需要占用总线的申请者,在多个申请者同时提出总线请求时,以一定的优先算法仲裁哪个应获得对总线的使用权。

仲裁方法

链式查询

总线授权信号BG串行地从一个I/O接口传送到下一个I/O接口。假如BG到达的接口无总线请求,则继续往下查询;假如BG到达的接口有总线请求,BG信号便不再往下查询,该I/O接口获得了总线控制权。离中央仲裁器最近的设备具有最高优先级,通过接口的优先级排队电路来实现。

好处:只用很少几根线就能按一定优先次序实现总线仲裁,很容易扩充设备。

坏处:对询问链的电路故障很敏感,如果第i个设备的接口中有关链的电路有故障,那么第i个以后的设备都不能进行工作。查询链的优先级是固定的,如果优先级高的设备出现频繁的请求时,优先级较低的设备可能长期不能使用总线。

计时器定时查询

总线上的任一设备要求使用总线时,通过BR线发出总线请求。中央仲裁器接到请求信号以后,在BS线为“0”的情况下让计数器开始计数,计数值通过一组地址线发向各设备。每个设备接口都有一个设备地址判别电路,当地址线上的计数值与请求总线的设备地址相一致时,该设备 置“1”BS线,获得了总线使用权,此时中止计数查询。

每次计数可以从“0”开始,也可以从中止点开始。如果从“0”开始,各设备的优先次序与链式查询法相同,优先级的顺序是固定的。如果从中止点开始,则每个设备使用总线的优先级相等。

计数器的初值也可用程序来设置,这可以方便地改变优先次序,但这种灵活性是以增加线数为代价的。

独立请求

每一个共享总线的设备均有一对总线请求线BRi和总线授权线BGi。当设备要求使用总线时,便发出该设备的请求信号。中央仲裁器中的排队电路决定首先响应哪个设备的请求,给设备以授权信号BGi。

独立请求方式的优点:响应时间快,确定优先响应的设备所花费的时间少,用不着一个设备接一个设备地查询。其次,对优先次序的控制相当灵活,可以预先固定也可以通过程序来改变优先次序;还可以用屏蔽(禁止)某个请求的办法,不响应来自无效设备的请求。

缺点:设备连线多,总线控制复杂。


输入输出设备

常见的输入输出设备

鼠标、键盘、扫描仪、显示器等。

输入输出接口的通用设计

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

单向传输数据线

双向传输数据线
状态线
IO设备状态向主机报告的信号线 

查询设备是否已经正常连接并就绪 

查询设备是否已经被占用
命令线
CPU向设备发送命令的信号线 

发送读写信号

发送启动停止信号
设备选择线
主机选择I/O设备进行操作的信号线 

对连在总线上的设备进行选择   

CPU与IO设备的通信

CPU和IO设备的速度是不一致的

程序中断

提供低速设备通知CPU的一种异步的方式,CPU可以高速运转同时兼顾低速设备的响应。

当外围IO设备准备就绪时,向CPU发送中断信号,CPU内部有专门的电路响应中断信号,CPU收到中断信号后就会中断当前工作转为处理外围设备的工作。待工作完成后,CPU加载之前的工作,继续处理。

DMA(直接存储器访问)

当主存与IO设备交换信息时,不需要中断CPU,可以提高CPU的效率。一般计算机的硬盘与显卡都有DMA设备。

image-20210223233726647

存储器

存储器的分类

image-20210224004720192
image-20210224004726664

存储器的层次结构

image-20210224000418297
缓存-主存层次

利用了局部性原理,在CPU和主存之间增加了一层速度快(容量小)的Cache,目的是为了解决主存速度不足的问题。

将程序经常访问的内存置换到高速缓存即可。

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

利用了局部性原理,在主存之外增加辅助存储器,目的是解决主存容量不足的问题。

将程序当前使用的数据加载到主存,不使用的数据加载到辅存。

主存储器与辅存储器

主存

RAM(随机存取存储器:Random Access Memory)

RAM通过电容存储数据,必须隔一段时间刷新一次

如果掉电,那么一段时间后将丢失所有数据

32位系统主存大小为:2^32 =4×2^30 =4

64位系统主存大小为:2^64 = 234 × 2^30 = 2^34

辅存

表面是可磁化的硬磁特性材料

移动磁头径向运动读取磁道信息

磁盘调度算法

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

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

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

循环扫描算法:每次只往一个方向移动,到尽头后回到初始位继续扫描


高速缓存

在存储器的层次结构中,高速缓存在CPU和主存之间,主要是为了解决CPU和主存速度不匹配的问题。

image-20210224003028615

高速缓存的工作原理

在往下看之前,先了解下下面的概念:

字: 指存放在一个存储单元中的二进制代码组合
字块:存储在连续存储单元中而被看作是一个单元的一组字

假设一个字有32位,一个字块有A个字,主存共有B个字块 
那么:主存总字数 = A * B ,主存总容量(bits) = A * B * 32

高速缓存的结构和主存类似,但是主存的容量是远大于缓存的容量。

缓存中存储的数据是主存中的一份复制,当CPU需要的数据在缓存中,直接从缓存里拿,当CPU需要的数据不在缓存中,则需要从主存里拿。

所以就有了两个量化指标:

命中率:命中缓存的次数占CPU访问次数的比例

访问效率:访问缓存时间和访问缓存-主存平均时间之比

高速缓存的替换策略

当CPU所需要的数据不在高速缓存中时,就需要从主存载入数据到高速缓存。一般有四种替换策略。

随机算法

随机选取高速缓存中的一个位置再替换

先进先出算法(FIFO)

把高速缓存看做是一个先进先出的队列,优先替换最先进入队列的字块

最不经常使用算法(LFU)

优先淘汰最不经常使用的字块,需要额外的空间记录字块的使用频率

最近最少使用算法(LRU)

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

有多种实现方法,一般使用双向链表,把当前访问节点置于链表前面(保证链表头部节点是最近使用的)

你可能感兴趣的:(计算机组成原理-03-计算机的组成(一))