Skip to main content

总线和输入输出系统

概述

tip

总线是一组能为多个部件分时共享的公共信息传输线路

分时: 指同一时刻只允许有一个部件向总线发送信息,如果系统中有多个部件,则它们只能分时的向总线发送信息

共享: 指总线上可以接多个部件,各个部件之间互相交换信息都可以通过这组线路分时共享

早期计算机外部设备少时多采用分散连接方式,不易实现随时增减外部设备。为了更好的解决 I/O 设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接

总线通常分为地址总线、数据总线、控制总线,总线上有主设备和从属设备。

分类

层次连接

  1. 片内总线:芯片内部的总线,它是 CPUCPU 芯片内部寄存器与寄存器之间,寄存器与 ALUALU 之间的公共连接线。
  2. 系统总线:计算机系统内各功能部件 (CPUCPU、主存、I/OI/O 接口) 之间相互连接的总线。按系统总线传输信息内容不同,又可分为三类: 数据总线,地址总线和控制总线;
  3. 通信总线:用于计算机系统之间或计算机系统与其他系统 (如远程通信设备,测试设备) 之间信息传送的总线,通信总线也称为外部总线。

数据位数

  1. 并行总线:逻辑时序比较简单,电路实现起来比较容易,但是信号线数量多,占用更多的布线空间;远距离传输成本高昂;由于工作频率较高时,并行的信号线之间会产生严重干扰,对每条线等长的要求也越高,所以无法持续提升工作频率;
  2. 串行总线:只需要一条传输线,成本低廉,广泛应用于长距离传输;应用于计算机内部时,可以节省布线,但是在数据发送和接收的时候,要进行拆卸和装配,要考虑串行和并行转换的问题。
note

现在大部分都是使用串行的,如 PCIEPCIESATASATA 协议等,因为其可以用频率弥补。

用法:专用总线、公用总线。

总线结构

单总线结构

CPUCPU,主存,I/OI/O 设备 (通过 I/OI/O 接口) 都连接在 一组 总线,允许 I/OI/O 设备之间,I/OI/O 设备和 CPUCPU 之间或 I/OI/O 设备与主存之间直接交换信息。

优点: 结构简单,成本低,易于接入新的设备

warning

单总线并不是指只有一根信号线,系统总线按传送信息的不同可以细分为地址总线,数据总线和控制总线

双总线结构

有两条总线,一条是主存总线,用于 CPUCPU,主存和通道之间进行传送,另一条是 I/OI/O 总线,用于多个外部设备与通道之间进行数据传送。

优点:将较低速的 I/OI/O 设备从单总线上分离出来。实现存储器总线和 I/OI/O 总线分离

缺点:需要增加硬件等通道设备

支持突发 (猝发) 传送,送出一个地址,收到多个地址连续的数据

info

通道是具有特殊功能的处理器,能对 I/OI/O 设备进行统一管理。通道程序存放在主存中

三总线结构

在计算机系统各部件之间采用 33 条各自独立的总线来构成信息的通路。这三条总线分别为主存总线,I/OI/O 总线和直接内存访问 DMADMA 总线 (DMA:DirectMemoryAccessDMA: Direct Memory Access 直接内存访问)

优点:提高了 I/OI/O 设备的性能,使其更快的相应命令,提高系统的吞吐量

缺点:系统工作效率较低

通信方式

同步通信方式

与时钟同步,速度快,接口逻辑简单,但是所有的设备需要是一致的,且时钟速率依慢速设备而定;当总线太长时会有时钟偏移的问题。

异步通信方式

无时钟信号,使用握手协议,通常分为非互锁、半互锁和全互锁方式;也有串行异步通信,无需时钟信号也无需握手协议

全互锁的流程如下:

  1. 先使数据信号保持有效;
  2. 在发送一个表示数据准备好的信号,接收设备开始接收数据;
  3. 接受完毕后返回一个应答信号,表示接受完毕。

串行异步通信需要设定好发送方和接受方的数据传输速率,有没有校验位等,当接收方检测到一个起始位之后,就会每隔一定的时间采样数据,直到采样到停止位(1/1.5/2 位),数据位一般不会太长(5,7,8 位等)。

总线仲裁

菊花链

使用总线的优先级由 总线可用 线所连接部件的物理位置来决定,离总线控制器越近的部件其优先级越高;叫菊花链的原因是因为 总线可用(Bus Grant) 的线直接接入第一个部件,再由第一个部件引出接入第二个,一次类推,像花环一样串起来,并依次实现优先级。

此外,还有两条线为 Bus Request,Bus BusyBus\ Request,Bus\ Busy(都是默认高电平),所有部件都接入这两个线;当一个部件需要使用总线时,其将 BRBR 线置为低电平,总线仲裁其会将 BGBG 线置为低电平,传给第一个需要使用总线的部件,而其他部件只能等待。

使用总线的部件会将 BBBB 线置为低电平表示有部件使用总线,总线仲裁时也只会在总线非忙时进行。

计数器定时查询(轮询)

将上述的 BGBG 使用 nn 条线代替,满足 2nm2^n\geq mmm 为部件的个数,当总线空闲时进行轮询,部件中也有 nn 个线与之相连,可以以此判断总线仲裁器询问的是哪个部件。

独立请求

每个部件单独将 BGBGBRBR 接入总线仲裁器,共用一个 BBBB 线,分配速度高,且优先级可以由总线确定。

分布式仲裁

分布式仲裁不需要仲裁器,但是仍然需要有 BR 和 BB,以此进行相互监听,防止冲突。

自举式分布式仲裁: 硬布线,nn 个部件就有 nnBRBR,优先级低的部件要同时监听所有优先级高的 BRBR 线。

链式分布式仲裁:形式与菊花链的仲裁方式相似,但是没有仲裁器,而是使用一个令牌从第一个部件向后传递,令牌会定时生成。

典型总线

内总线(系统总线)有 ISAISAPCIPCIPCIEPCIE 总线;外总线(通信总线)有 RS232CRS-232 CUSBUSBSCSISCSISASSASATAATASATASATA 等。

info

PCIPCI 总线和 PCIEPCIE 总线有很大的区别,PCIEPCIE 总线使用差分的形式进行串行传输,输入输出都是两根,并且支持全双工通信,属于端到端的传输形式;而 PCIPCI 总线类似一种树形的总线;但是其软件是兼容的,因此叫 PCIEPCIE.

USB 总线

USB:Universal Serial BusUSB: Universal\ Serial\ Bus,通用串行总线,由七家公司联合开发,其总线信号有 VBUSVBUS (电源),GNDGND(接地),D+D+(信号正),DD-(信号负);有三种传输速率,高速、全速、低速。

USB 3.0USB\ 3.0 加入了超速传输模式,速率可达 5.0 Gbps5.0\ Gbps,类似于 PCIEPCIE ,使用两跟数据线差分传输数据,同时为了防止高速串行传输数据造成丢失,需要使用特殊的编码方式,将传输数据均衡化,不会出现太多连续的 0011PCIEPCIE 中也使用了该方法。

I/O 接口作用及模型

接口是两个系统或者两个部件之间的交接部分,可以是两种硬件设备之间的连接电路,也可以是两个软件之间的共同逻辑边界。

那么 I/OI/O 接口通常是指 I/OI/O 设备和主机之间的一个硬件电路及其相应的软件控制,其内部有数据寄存器(缓冲器)、状态寄存器、控制寄存器、命令寄存器、I/OI/O 控制逻辑电路等,一边与总线相连接,一边与 I/OI/O 设备连接。

接口的功能有:

  1. 选址功能
  2. 传送命令
  3. 传送数据
  4. 信号形式匹配
  5. 负载匹配
  6. 错误检测
  7. 设备选择、控制
  8. 数据缓存、速度匹配
  9. 支持中断。 . .

I/O 地址的编码方式

存储器映射方式(统一编址)

将主存与 I/OI/O 设备放在同一个地址空间中,使用与主存相同的指令和控制信号,不需要专门的 I/OI/O 指令可以简化控制,在地址空间确定的情况下,两者的地址扩充相互制约。

I/O 映射方式(独立编址)

使用独立的地址空间,要求系统提供专门的 I/OI/O 指令,并且采用与主存不同的读/写控制信号,便于系统调试与维护,便于主存与 I/OI/O 地址空间的扩展,但是 I/OI/O 设备的操作不够灵活。

输入输出技术

tip

一般有四种:

  1. 程序查询方式
  2. 中断方式
  3. 直接存储器存取 (DMADMA) 方式
  4. I/OI/O 通道方式

程序查询方式

CPUCPU 不断地轮询 I/OI/O 设备,硬件简单,但是 CPUCPU 占用高;常用于简单的设备,如单片机等。

中断方式

接口电路和 CPUCPU 都需要添加中断的相应的电路,当外设向 CPUCPU 发射了中断请求,如果现在 CPUCPU 运行的程序没有屏蔽中断,则会进行中断处理,包括保护断点(保存 PCPCPSWPSW),保护现场(保存通用寄存器),执行中断服务,恢复现场,中断返回等。

tip

中断可以来自 CPUCPU 内部和外部,内中断也被称为异常,常见的有溢出中断、缺页中断。

中断源的选择也是需要仲裁优先级的,一般使用菊花链(无优先仲裁电路)或者分组独立请求的方案。

DMA 方式

中断方式中数据交换必须经过 CPUCPU 中的寄存器,因此速度受限,DMADMA 直接存储器存取的基本思想是在 I/OI/O 设备直接直接建立数据交换通路,彻底解放 CPUCPU,特点如下:

  1. 基本单位是数据块;
  2. 从设备直接送入内存,反之亦然;
  3. 仅在传送一个或多个数据块的开始和结束时,才需要 CPUCPU 干预,整块数据的传送是在 DMADMA 控制器下完成的。

DMA 控制器中有如下 4 类寄存器:

  1. 命令/状态寄存器(CR),接受 CPUCPUI/OI/O 命令、有关控制信息或设备状态;
  2. 内存地址寄存器(MAR),输入时,其存放传输数据到内存中的启始目标地址,输出则存放数据在内存中的源地址;
  3. 数据寄存器(DR)
  4. 数据计数器,存放本次要传送的字(节)数;

通道控制方式

I/OI/O 通道是指专门负责输入/输出的处理机,I/OI/O 通道方式是 DMADMA 方式的发展,可以进一步减少 CPUCPU 的干预,传输单位由块变为组,同时可以实现 CPUCPU、通道、I/OI/O 设备三者的并行操作。

读写时,CPUCPU 向通道发送一条 I/OI/O 指令,给出要执行的 通道程序 的首地址和要访问的 I/OI/O 设备,通道会执行通道程序;结束时会向 CPUCPU 发送中断请求。

通道与一般处理机的区别

指令类型单一,没有自己的内存,通道程序放在主机的内存当中。

通道与DMA的区别

DMA 需要 CPU 控制传送数据块大小和内存位置,而通道则是由通道程序控制;一个 DMA 控制器只能对应一个设备,而一个通道可以对应多台设备。