总线与IO

 


总线

总线(Bus):计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线地址总线控制总线,分别用来传输数据数据地址控制信号

文字虽然很长,但不知道TA在说什么。

举个例子吧,USBUSB 全称是 Universal Serial BusUniversal~Serial~Bus,中文是:线通用串行总线

USBUSB 是一个总线。

总线与IO

无论什么总线,都是解决不同设备之间的通信问题

这是有总线连接的设备(脉络清晰):

总线与IO
如果没有总线连接,那设备之间是相互通信的,每个设备都要有线连接(分散连接):
总线与IO
这样连接的话,每多一个设备,就得多 nn 条线,连接设备的线数会呈指数级增加。
 


总线的分类

总线与IO
片内总线是在芯片内部的总线

CPUCPU里,也有相关的总线:
总线与IO
可以连接寄存器和寄存器、寄存器与运算器、控制器之间的设备。

片内总线,可以说是高集成度芯片内部的信息传输线,大大简化了芯片里面的电路结构。
 


系统总线是 CPU、内存、IO设备、各组件之间的信息传输线

总线与IO
系统总线,分为:

  • 数据总线

    总线的位数(总线宽度)和 CPU 位数相同(32位 or 64位),负责双向传输各部件的数据信息。

  • 地址总线

    负责地址的寻址,若地址总线位数有 nn 个,那寻址范围:02n0-2^{n}

  • 控制总线

    负责发出各种控制信号的传输线,也可以检测各个部件为交换数据是否就绪。

 


总线的仲裁

假设现在,内存与硬盘、IO设备交换数据,控制总线检测三者已经就绪,可总线该给谁使用呢?

总线与IO

总线的仲裁,就是为解决总线使用权的冲突问题。

总线的仲裁的方法:

  • 【链式查询】
    总线与IO
    假设 3设备3 需要使用权,仲裁控制器会通过链式顺序把使用权依次给 1设备12设备23设备3

    因为只有 3设备3 需要使用权,所以,最后 3设备3 会得到使用权。

    链式查询的好处是电路简单,但如果 1设备12设备23设备3 同时需要使用权,那只有 1设备1 获取了使用权,对优先级低的设备难以获得使用权,对电路故障也比较敏感。

  • 【计时器定时查询】

    仲裁控制器对设备编号并使用计数器累计计数,接收到仲裁信号后,往所有设备发射计数值,计数值与设备编号一致则获得使用权。

    比如,现在 2设备2 需要使用权。
    总线与IO
    仲裁控制器从编号 11 开始,往所有设备发信息,但 11 与需要使用权的设备不一致, 所以仲裁控制器编号加一。
    总线与IO
    计数器编号 = 设备22设备2 获取使用权。

  • 【独立请求】

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

    总线与IO
    独立请求的好处:响应速度快,优先级顺序可动态改变。

    但设备连接线多,总线控制复杂。

 


IO

I/O 输入/输出(Input/Output),分为 IO 设备和 IO 接口两个部分。

总线与IO
字符输入设备,主要是键盘。

图像输入设备,主要是鼠标、数位板、扫描仪。

IO 接口负责:

  • 向设备读写数据
  • 判断设备是否被占用
  • 判断设备是否已连接
  • 判断设备是否已启动

于是,通用的接口就有:

  • 数据线:主机和IO设备传输、交换数据
  • 状态线:IO设备状态向主机报告的信号线,可判断是否被占用、已连接、已启动
  • 命令线:CPU向设备发送命令的信号线(如读写、启动、停止的信号)
  • 设备选择线:连接多个设备时,可以选择一个的信号线

 


CPU与IO设备的通信

CPU和IO设备的读写速度差几个数量级,

  • 程序中断

    当外围IO设备就绪时,向CPU发出中断信号,CPU有专门的电路响应中断信号。
    总线与IO

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

    但如果有多次中断,就会影响CPU效率,所以还有一种 DMA(直接存储器访问法)不需要CPU的参与。

  • DMA(直接存储器访问法)

    DMA直接连接内存与IO设备,通信时不需要CPU参与。

    总线与IO