文章目录
总线的基本概念
历史:
早期计算机采用分散连接的方式,这种连接方式以运算器为中心,I/O与存储器交换信息时,都要通过运算器,致使运算器停止运算。为了提高CPU工作效率,改进为存储器为中心的分散连接。随着IO设备的增多,这种连接方式逐渐淘汰,所以出现了总线连接的方式。
计算机使用总线结构便于增减外设,同时减少了信息传输线。
知识点:
总线:
总线是连接多个部件的信息传输线,是各部件共享的传输介质。
以CPU为中心的双总线结构:
包括存储总线(M总线)和I/O总线,前者连接CPU和主存,后者连接CPU和I/O。
缺点:这种结构在I/O与主存进行交换信息依然要占用CPU
单总线结构:
单独拉出一条系统总线,CPU,主存,和各IO设备连接到该系统总线。当I/O与主存进行交换信息时,CPU可以继续处理不访问主存或I/O设备的操作。
缺点:因为只有一组总线。容器发生冲突,就必须设置判优逻辑,这会影响整机的工作速度
以存储器为中心的双总线结构:
在单总线的基础上又开辟了一条CPU与主存之间的总线(存储总线)。存储总线只提供主存与CPU直接的信息传输。有点像上面两种结构的折中。
总线的分类
分类标准:
- 按数据传送方式可分为:
并行传输总线和串行传输总线 - 按总线的使用范围可分为
计算机总线,测控总线,网络通信总线 - (重点)按连接部件分
片内总线,系统总线,通信总线。
片内总线:
芯片内部的总线,如:CPU内部,寄存器和寄存器之间,寄存器和ALU之间都是由片内总线连接,速度极快。
系统总线:
系统总线是指:在CPU,主存,I/O设备各大部件之间的信息传输线。
系统总线下面按照传输信息的不同又可分为数据总线,地址总线,控制总线
1. 数据总线
用来传输各部件之间的数据信息,双向数据线。
2.地址总线
用来指出数据总线上的源数据或目的数据所在主存单元或I/O设备的地址。
单向传输:由CPU输出。用来指明CPU要访问的存储单元或I/O地址
3.控制总线
用来发出各种控制信号的传输线(控制信号,响应信号,时序信号)。对于某个特定的控制线来说他是单向的,但是从总体上看控制总线是双向的。
(举个例子,假如有A,B两条控制线,其中A的方向为CPU到I/O,B的方向为I/O到CPU,对于A,B来说,他们的控制信号传输方向是不能改变的,但从总体上看,控制总线既有从CPU->I/O的,也有I/O到CPU的,所以总体上是双向的)
通信总线
按传输方式分为两种:串行通信和并行通信
1.串行通信
串行通信是指单条1位宽的数据线,一位一位分时地进行传输。
2.并行通信
多条并行的1位宽的数据,同时进行传输。
3.对比
- | 串行通信 | 并行通信 |
---|---|---|
优点 | 稳定,信号不易受到干扰 | 传输速率快 |
缺点 | 传输速率慢 | 易受干扰 |
适用场景 | 远距离传输 | 近距离传输 |
总线的特性及性能指标
总线特性
- 机械特性
指连接方式上的一些特性 - 电气特性
指每个传输线的信号的传递方向和电平范围(什么范围为高?什么范围为低) - 功能特性
每个传输线的功能 - 时间特性
任一根线在什么时间内有效
总线指标
- 总线宽度:
数据总线的根数,用位(bit)表示 - 总线带宽:
单位时间内总线上传输数据的位数 通常用MBps(兆字节每秒) (注意与bps进行区别,bps指的是波特率,是单位时间内传输的位数) - 总线复用:
一条信号线上分时传送两种信号。采用多路复用技术实现 - 时钟同步/异步
- 信号线数
- 总线控制方式:包括突发工作、自动配置、仲裁方式、逻辑方式、计数方式等
- 其他指标:负载能力、电源电压、总线宽度是否可以扩展等
负载能力:指驱动能力,当总线接上负载后,总线输入输出的逻辑电平是否保持在额定范围内。
总线标准
1. ISA总线
- 具有独立于CPU的总线时钟
- 总线宽度为16位,地址线为24位
- CPU需花大量时间来控制和外部设备交换数据
2.EISA总线
- 在ISA总线的基础得来,从CPU分离出了总线控制权
- 总线宽度为32位,地址宽度为32位
3.VESA(VL-BUS)总线
- 总线宽度为32位,可扩展至64位
4.PCI总线
- 高性能,不依赖某个具体的处理器,数据线为32位可扩展至64位
- 兼容性良好
- 支持即插即用(Plug and Play)(PCI和USB都支持)
- 采用多路复用技术
- …
5.AGP总线
AGP(Accelerated Graphics Port 加速图形端口)处理三维数据和图形的总线,一般用于显卡。
6.RS-232C总线
一种串行通信总线,可用于实现载波通信
7.USB总线
通用串行总线(USB)具有以下特征
- 即插即用
- 很强的连接能力,可以连接多个外设到一个系统
- 数据传输率 1.0可达1.5Mbps 2.0可达480Mbps
- 标准统一
- 体积小巧
- 生命力强
总线结构
一般分为单总线结构和多总线结构
单总线结构
有个系统总线,CPU,主存,I/O设备都挂在上面,容易造成计算机性能的瓶颈。
多总线结构
双总线结构:包括主存总线和I/O总线
三总线结构:包括主存总线(CPU和主存之间)、I/O总线(CPU和IO之间)和DMA总线(主存和IO之间)
总线控制
总线控制包括了判优控制和通信控制:
主模块:主模块对总线有控制权
从模块:从模块只能响应主模块发来的总线命令,没有总线控制权
判优控制
判优控制可分为集中式和分布式两种
集中式
- 链式查询
其控制总线由BS(总线忙),BR(总线请求),BG(总线同意)三条线构成。
BG是串行地由一个I/O接口送到下一个I/O接口。如果到达的接口有请求,BG信号就不再往下传,意味着该接口获得了总线的使用权,然后建立BS(总线忙)信号。优先级逐级递减,对电路故障敏感 - 计数器定时查询
相比链式查询,少了一根总线同意线(BG),多了一组设备地址线。
工作方式: 总线控制器接到BR线送来的总线请求信号后,在总线未被使用的情况下(BS=0)由计数器开始计数,并通过设备地址线发出一组地址信号,然后某个与该信号一致的设备获得总线使用权。此时终止计数查询,查询可以从0开始(此时优先级逐级递减),也可以从上一次终止计数的地方开始(此时各部件优先级相同,这种也叫循环计数) - 独立请求方式
独立请求方式,每一设备都有单独的一组BR(总线请求)和BG(总线同意)。而总线控制部件中有一排队电路,可按优先次序确定响应哪个设备的请求。
特点是响应时间短,速度快,但控制复杂
对比
- | 优点 | 缺点 | 控制线数 |
---|---|---|---|
链式查询 | 控制简单,仅用三根线即可控制并且很容易扩充设备 | 对电路故障敏感,低优先级的设备很难获得控制权 | 3根 |
计数器定时查询 | 优先次序可以被改变,对电路故障没那么敏感 | 增加了控制线,控制也比较复杂 | l o g 2 n {log_2{n}} log2n |
独立请求方式 | 响应速度快,优先次序控制灵活 | 控制线线路较多,控制复杂 | 2n |
分布式
考纲和书上没有,不总结
通信控制
目的:解决通信双方如何获知信息传输开始和传输结束,以及通信双方如何协调与配合
可分为:同步,异步,半同步,分离式
总线周期(通信周期)
- 申请分配阶段
由主模块提出申请,经过总线仲裁机构决定下一周期总线使用权给哪个申请者 - 寻址阶段
获得了使用权的主模块通过总线发出本次要访问的从模块的地址和有关命令 - 传数阶段
主模块和从模块进行数据交换。 - 结束阶段
主模块让出总线控制权
通信方式
同步通信
通信双方由统一时钟信号控制下进行通信,时钟信号通常由CPU的总线控制部件发出,每个周期内完成特定的任务。
异步通信
不采用统一的时钟信号控制通信,而采用应答的方式进行通信
可分为:不互锁,半互锁,全互锁
1. 不互锁
- 对于主模块来说:
主模块发出信息后,不需要等待街道从模块的回答信号,而是经过一段时间,便撤销请求信号 - 对于从模块来说:
从模块接收到请求后,在条件就发出回答信号,并经过一段时间,便撤销回答信号。 - 应用场景:
CPU向主存写信息
2.半互锁
- 对于主模块来说:
主模块发出请求信号,必须接到从模块的回答信号才撤销其请求信号,有互锁关系 - 对于从模块来说:
从模块接到请求信号后发出回答信号,而不必等待获知主模块的撤销请求信号,而是隔一段时间后就撤回回答信号,无互锁关系。 - 应用场景
多机系统中,CPU访问共享存储器,CPU发出访存命令后,必须接收到存储器未被占用的回答信号,才能进行真正的访存操作
3.全互锁
- 对于主模块来说:
主模块发出请求信号,必须接收到从模块的回答信号,然后发出撤销请求信号,存在互锁关系 - 对于从模块来说:
从模块发出回答信号之后,必须等待获知主模块的撤销请求信号,存在互锁关系 - 应用场景:
网络通信,例如著名的三次握手
半同步通信
半同步通信既保留了同步通信的特点(发送方所有的地址,命令、数据信号的发出时间在系统时钟的某个上升沿开始,接收方都采用系统时钟后沿时刻进行识别判断),同时又通过插入N个“等待”(WAIT)信号解决与协调通信速度不一致的问题,双方像异步通信那也,允许不同速度的模块进行工作
分离式通信
进一步分析总线传输周期得知,除了申请总线这一阶段,其余时间主要花在下面3个地方
- 主模块通过传输总线向从模块发出地址与命令
- 从模块准备数据
- 从模块经过数据总线向主模块发送数据
可以看见,在2中从模块准备数据的过程中,总线并没有完全利用,处于等待状态,为了发掘系统每一瞬间的潜力,因此采用了分离式通信。
分离式通信将传输周期(or总线周期)分为两个子周期。
- 第一个子周期
模块A在获得总线使用权后,将命令,地址等信息发到系统总线上,然后立刻放弃总线使用权,给别的模块使用 - 第二个子周期
B模块接收到命令后,经过一段时间(译码,读取)准备好数据之后,申请总线控制权,一旦获批,B模块便把数据放到系统总线上,传输给A,然后立刻放弃总线控制权。
显然:上面两个传输子周期都只有单方向的信息流,每个模块都变成了主模块。