|
知识路径: > 计算机系统基础知识 > 计算机组成及主要部件的基本工作原理 > I/O接口的功能、类型和特点 > 输入/输出控制 >
|
相关知识点:5个
|
|
|
|
可将I/O设备分为块设备和字符设备两类。块设备把信息存放在固定大小的块中,每个块都有自己的地址,独立于其他块,可寻址。例如磁盘、USB闪存、CD-ROM等。字符设备以字符为单位接收或发送一个字符流,字符设备不可以寻址。例如打印机、网卡、鼠标键盘等。
|
|
|
I/O设备一般都包含设备控制器,一般以芯片的形式出现,如南桥芯片。不同的控制器可以控制不同的设备。南桥芯片中包含了多种设备的控制器,如硬盘控制器、USB控制器、网卡、声卡控制器等。I/O设备通过总线以及卡槽与计算机其他部件进行连接,如PCI、PCI-E、SATA、USB等。
|
|
|
不同设备控制器的操作控制通过专门的软件即驱动程序进行控制。每个控制器都有几个寄存器与CPU进行通信。通过写入这些寄存器,可以命令设备发送或接受数据,开启或关闭。通过读这些寄存器就能知道设备的状态。由于寄存器数量和大小是有限的,所以设备一般会有一个RAM性质的缓冲区,来存放一些数据。例如硬盘的读写缓存,显卡的显存等。一方面提供数据存放,另一方面是提高I/O操作的速度。
|
|
|
CPU与I/O设备控制器中的寄存器或数据缓冲区如何进行通信?存在以下两个可选方案:
|
|
|
(1)为每个控制器分配一个I/O端口号,所有的控制器可以形成一个I/O端口空间,这些信息存放在内存中,一般程序不能访问,操作系统则通过特殊的指令和端口号来从设备读取或是写入数据。早期计算机基本都是这种方式,通常使用汇编语言进行操作。
|
|
|
(2)将所有控制器的寄存器映射到内存空间,于是每个设备的寄存器都有一个唯一的地址。这种称为内存映射I/O。由于不需要特殊的指令控制,对待I/O设备和其他普通数据访问方式是相同的,因此可以使用C语言来编程。
|
|
|
也可以将上述两种方式相结合,例如,寄存器拥有I/O端口,而数据缓冲区则映射到内存空间。
|
|
|
CPU无论是从内存还是I/O设备读取数据,都需要把地址放到地址总线上,然后向控制总线传递一个读信号,还要用一条信号线来表示是从内存还是I/O读取数据。
|
|
|