文中部分图片来源于国防科技大学计算机原理慕课
1. 总线的概念
总线是连接两个以上部件或设备的信息通路,是部件或设备间的共享传输介质
1 总线的特征
- 总线上信息传输方式
- 串行
- 并行
- 影响总线速度的因素
- 总线长度(length)
总线长度越长,传输信息的延迟越大 - 总线连接的设备树
2 总线的分类
(1)芯片内总线
芯片内各元件(CPU内各寄存器、ALU、指令部件)间的连接
(2)系统总线
计算机系统中主要部件(CPU、主存、各种IO控制器)的连接总线,即贯通冯诺依曼结构部件的总线
- 单总线结构
将各部件通过地板总线互连,底板总线通常为标准总线。
该总线容易造成多设备竞争总线,在多种速度差异大的设备连接在一起时性能会受限,且可扩展性差
- 多总线结构
将CPU、cache、主存等部件通过局部总线、处理器-主存总线、告诉IO总线、扩展IO总线等互连
该类型总线可以改善设备对总线的使用竞争,可以增加系统外接设备的数量,也能允许速度差异大的设备连接在一条总线上
- 存储总线
连线短且速度快,仅需与主存匹配,使CPU-主存间达到最大带宽 - IO总线
一侧连存储总线或者底板总线,一侧连到各类IO控制器,目的在于适配速度差异较大的IO设备
因此IO bus连线长且速度慢
- 通信总线
为主机和IO设备间或不同的计算机系统间提供连接
3 总线上的设备
- 根据在总线上的权限分
可以分为主设备和从设备:
- 主设备能够申请并获得总线使用权,具有控制总线的能力,发起总线事务,例如CPU、Debug模块、DMA控制器等
- 从设备不具有申请总线使用权,只能是被总线事务激活的设备,例如存储器模块
- 根据数据传送方向分
可以分为原设备和目标设备
- 根据访问总线的方式分
可以分为存储器设备和IO设备(?根据指令访问?)
- 存储器设备:以访问存储器的方式访问的设备
- IO设备:以访问IO的方式访问
4. 总线的信号
总线通常由控制线、数据线、地址线构成,有的总线也有电源线。有的总线没有单独的地址线,数据线和地址线复用
- 数据线
传输数据,数据线宽度反映一次能传输的数据位数
- 地址线
给出原数据或目的数据所在的主存单元或IO端口的地址,地址线的宽度反映最大的寻址空间
- 控制线
控制对数据线和地址线的访问和使用,用来传输定时信号和命令信息,典型的控制信号有:
- 时钟信号:用于总线同步
- 复位:初始化总线设备
- request:总线请求
- grant:总线响应允许
- interrupt request:中断请求
- interrupt acknowledge:表明某个中断请求已被接受
- memory read:存储器读,从指定存储单元中读数据到数据总线上
- memory write:存储器写
- IO read:IO读,从指定的IO端口中读数据到数据总线上
- IO write:IO写
- transmission acknowledge:传输确认,表示数据已被接收或已传送到总线
2. 总线的设计
总线设计的基本要素有L
- 信号带宽:单位时间内在总线上传输的最大数据量
- 信号线类型:信号线专用/复用,例如地址线或者数据线是否各自专用和合用
- 仲裁方法:集中式/分布式
- 定时方式:同步/异步
- 事务类型:总线所支持的各种数据传输类型和其他总线操作类型
1 总线仲裁
当多个设备需要使用总线进行通信时,为避免每个设备同时将自己的信号送到总线上从而产生信号混乱,需采用某种策略来指定某个设备使用总线,而一般采用的策略有两种,一种是在总线中引入一个/多个总线主设备,只有主设备能控制总线,另一种就是利用总线仲裁决定哪个总线主设备将获得下次的总线使用权。
(1)仲裁策略考虑的因素
总线在仲裁时需要在以下两个因素间进行平衡。
- 等级性:具有高优先级的设备应该先被服务
- 公平性:即使具有最低优先级的设备也不能永远得不到总线使用权
(2)总线仲裁的方式——集中式
将控制逻辑做在一个专门的总线控制器或仲裁器中,通过将所有的总线请求集中用在一个特定的仲裁算法进行仲裁。集中式仲裁的方式有菊花链、计时器定时查询、独立请求三种类型
- 菊花链
Grant从最该优先权的设备依次向最低优先权的设备传递。如果到达的设备有总线请求,则grant信号就不再往下传,该设备建立总线Busy信号,表示其以获得总线使用权。
该方式简单,只需要几根线就能按一定有限次序实现总线仲裁,且易于扩充设备。
但是该方式不能保证公平性,对顶啊路故障较为敏感,且限制了总线性能。
- 计时器定时查询
该方式比菊花链多一组设备线(设备ID号),总线控制器接收到总线请求信号后,在总线未被使用(Busy=0)的情况下,由计数器开始计数,并将计数值通过设备线向设备广播。当某个有总线线请求的设备号与计数值一致时,该设备便获得总线使用权,此时终止计数查询,同时该设备建立总线忙Busy信号。
该方式较为灵活,因为设备的优先级可通过设置不同的计数初始值来改变;且对电路故障不如菊花链查询那样敏感。
但是该方式需要增加一组设备ID线,总线控制裸机也较为复杂
- 独立请求方式
该方式中各设备都有一对总线请求线Req和总线允许先Grant。当某个设备需要用总线时,通过对应总线请求线将请求信号送到总线控制器。
总线控制器有个判优电路,可根据各设备优先级确定哪个设备,控制器也可采用固定的优先级,也可编程设置优先级。
该方式响应速度快,优先级可灵活设置。
但是控制裸机复杂,且控制线较多。
(3)总线仲裁的方式——分布式
没有专门的总线控制器,其控制裸机分散在各个部件或设备中
- 自举式
设备优先级固定,各设备独立决定是否是请求者中优先级最高的那一个;
请求总线的设备在各自对应总线请求上送出请求信号;
在总线仲裁期间,每个设备将比自己优先级高的请求线上的信号取回分析,若有请求则被设备不能立即使用总线,若没有则立即使用并通过总线忙信号阻止其他设备使用总线
- 冲突检测式
该方式一般用在网络通信总线上,如Ethernet总线。
当某个设备要使用总线时,它需要检查是否有其他设备在使用总线,若没有则使用设备并设置总线忙;
若两个设备同时检测到总线空闲,则可能会同时使用总线,此时会发生冲突,为避免冲突,需要设备在传输过程中侦听总线是否冲突,其次冲突发生时,两个设备都停止传输,延迟一个随机时间后在重新使用总线。
2 总线通信方式
总线仲裁后,需要通过总线的定时来定义总线事务中的每一步何时开始、何时结束。总线的定时方式一般有同步、异步、半同步、拆分事务四种方式。
(1)同步式定时
根据确定的通信协议用时钟来同步定时,一般CPU-处理器总线会采用同步方式
该方式控制逻辑少而速度快,但是由于所有设备在统一时钟速率下工作,以最慢的设备为准,且由于时钟偏移问题,同步总线不能很长。
(2)异步式
不采用统一时钟,采用握手协议定时,一般只有IO总线才会使用
该方式较为灵活,可挂接各种不同工作速度的设备;但是对噪声较为敏感,接口逻辑较复杂
异步式总线又可分为三种类型:非互锁通信、半互锁通信和全互锁通信
- 非互锁通信
主设备发出请求信号后,不必等待接到从设备的回答信号,而是进过一段时间,确认从设备已收到请求信号后,便撤销其请求信号;从设备接到请求信号后,在条件允许时发出回答信号,并且经过一段时间(这段时间的设置对不同设备而言是不同的)确认主设备已经收到回答信号后,自动撤销回答信号。 - 半互锁通信
主设备发出请求信号,必须待接到从从设备的回答信号后再撤销其请求信号,或互锁关系;而从设备在接到请求信号后发出回答信号,但不必等待获知主设备的请求已经撤销,而是隔一段时间后自动撤销其回答信号,无互锁关系。由于一方存在互锁关系,一方不存在互锁关系,故称半互锁方式。 - 全互锁通信
主设备发出请求信号,必须待从设备回答后再撤销其请求信号;从设备发出回答信号,必须待获知主设备请求信号已经撤销后,再撤销其应答信号。双发存在互锁关系,故称全互锁方式
(3)半同步
同步和异步方式结合,即引入时钟信号、就绪和应答信号,信号在时钟的上升沿有效,信号有效期间不受其他信号干扰。IO总线大都采用该方式
该方式综合解决了同步和异步各自的问题。
(4)拆分事务
从设备准备数据时释放总线,可以提高总线的有效带宽。
该方式改善系统效率,但是单个事务响应时间变长,增加了复杂性
3 总线带宽
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82481.html