总线与IO
总线
总线(Bus):计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。
文字虽然很长,但不知道TA在说什么。
举个例子吧, 全称是 ,中文是:。
是一个总线。
无论什么总线,都是解决不同设备之间的通信问题。
这是有总线连接的设备(脉络清晰):
如果没有总线连接,那设备之间是相互通信的,每个设备都要有线连接(分散连接):
这样连接的话,每多一个设备,就得多 条线,连接设备的线数会呈指数级增加。
总线的分类
片内总线是在芯片内部的总线。
在里,也有相关的总线:
可以连接寄存器和寄存器、寄存器与运算器、控制器之间的设备。
片内总线,可以说是高集成度芯片内部的信息传输线,大大简化了芯片里面的电路结构。
系统总线是 CPU、内存、IO设备、各组件之间的信息传输线。
系统总线,分为:
-
数据总线
总线的位数(总线宽度)和 CPU 位数相同(32位 or 64位),负责双向传输各部件的数据信息。
-
地址总线
负责地址的寻址,若地址总线位数有 个,那寻址范围:。
-
控制总线
负责发出各种控制信号的传输线,也可以检测各个部件为交换数据是否就绪。
总线的仲裁
假设现在,内存与硬盘、IO设备交换数据,控制总线检测三者已经就绪,可总线该给谁使用呢?
总线的仲裁,就是为解决总线使用权的冲突问题。
总线的仲裁的方法:
-
【链式查询】
假设 需要使用权,仲裁控制器会通过链式顺序把使用权依次给 、、。因为只有 需要使用权,所以,最后 会得到使用权。
链式查询的好处是电路简单,但如果 、、 同时需要使用权,那只有 获取了使用权,对优先级低的设备难以获得使用权,对电路故障也比较敏感。
-
【计时器定时查询】
仲裁控制器对设备编号并使用计数器累计计数,接收到仲裁信号后,往所有设备发射计数值,计数值与设备编号一致则获得使用权。
比如,现在 需要使用权。
仲裁控制器从编号 开始,往所有设备发信息,但 与需要使用权的设备不一致, 所以仲裁控制器编号加一。计数器编号=设备2, 获取使用权。 -
【独立请求】
每个设备均有与总线独立连接的仲裁器,设备可单独向仲裁器发射和接收请求,当同时收到多个请求信号,仲裁器有权按优先级分配使用权。
独立请求的好处:响应速度快,优先级顺序可动态改变。但设备连接线多,总线控制复杂。
IO
I/O 输入/输出(Input/Output),分为 IO 设备和 IO 接口两个部分。
字符输入设备,主要是键盘。
图像输入设备,主要是鼠标、数位板、扫描仪。
IO 接口负责:
- 向设备读写数据
- 判断设备是否被占用
- 判断设备是否已连接
- 判断设备是否已启动
于是,通用的接口就有:
- 数据线:主机和IO设备传输、交换数据
- 状态线:IO设备状态向主机报告的信号线,可判断是否被占用、已连接、已启动
- 命令线:CPU向设备发送命令的信号线(如读写、启动、停止的信号)
- 设备选择线:连接多个设备时,可以选择一个的信号线
CPU与IO设备的通信
CPU和IO设备的读写速度差几个数量级,
-
程序中断
当外围IO设备就绪时,向CPU发出中断信号,CPU有专门的电路响应中断信号。
程序中断,是提供低速IO设备通知高速CPU的一种异步通信方式,CPU可以高速运转同时兼顾低速IO设备的响应。
但如果有多次中断,就会影响CPU效率,所以还有一种 DMA(直接存储器访问法)不需要CPU的参与。
-
DMA(直接存储器访问法)
DMA直接连接内存与IO设备,通信时不需要CPU参与。