电脑技术学习

LPI 101 考试准备: 硬件和体系结构

dn001

DMA

先前提及的与外围设备通过 IO 端口进行的通信,每次传递一个或者两个字节。对于快速的设备,服务中断会用掉大量 CPU 处理能力。更快的方法是使用 直接内存访问(Direct Memory Access,DMA),使用很少 IO 指令告诉设备到 RAM 中哪个位置去读或写数据,然后 DMA 控制器提供 RAM 和外围设备之间数据实际传输的硬件管理。

谁可以猜出在哪里可以找到关于正在使用的 DMA 通道的信息,请举手。如果您说它是在 /proc/dma 中,那么就说对了。运行 cat /proc/dma 命令,可以看到如清单 7 所示的输出。


清单 7. /proc/dma

					 4: cascade 

;

那就足够了吗?重要的是要记住,当 IO 实际发生时,大部分设备只请求一个或者有限数目的 DMA 通道,所以,在我们的示例中 /proc/dma 经常看起来是几乎是空的。也可以像前面处理 IRQ 那样,扫描引导消息来查找具有 DMA 能力设备的证据。


清单 8. /proc/dma

					[ian@lyrebird ian]$ dmesg | grep -i dma    ide0: BM-DMA at 0x1860-0x1867, BIOS settings: hda:DMA, hdb:pio    ide1: BM-DMA at 0x1868-0x186f, BIOS settings: hdc:DMA, hdd:DMAhda: 312581808 sectors (160042 MB) w/8192KiB Cache,      CHS=19457/255/63, UDMA(100)hdc: 398297088 sectors (203928 MB) w/7936KiB Cache,      CHS=24792/255/63, UDMA(33)ehci-hcd 00:1d.7: enabled 64bit PCI DMA

即插即用(Plug and play)

早期的 PC 为特定设备分配固定的端口号和 IRQ,比如键盘或者并行打印端口。这导致难以添加新设备或者使用两个相同类型的设备,比如两个调制解调器或者两个打印机。第一个串行端口通常称为 COM1,第二个称为 COM2。Linux 系统通常将它们称为 ttyS0ttyS1。例如,某些可配置的卡通常具有硬件跳线,允许一个调制解调器既可以在 COM1 上使用也可以在 COM2 上使用。随着设备越来越多,原来分配的 IO 端口地址空间和 IRQ 不再能满足要求,从而提出了 即插即用(Plug and Play,PnP)。其思想是,允许设备告诉系统它需要多少资源及所需资源的种类,然后由 BIOS 告诉设备它应该使用的具体资源。IBM PS/2 开始使用这种半自动的配置,它使用了一种称为 微通道(microchannel) 的总线体系结构。后来,那个思想以及即插即用这一名称得到了 ISA 卡的使用,尤其是调制解调器和声卡,当时它们是流行的附加设备卡。PCI 总线进一步发展了那个思想,所有 PCI 设备都本质上是即插即用的。

如果使用的系统恰巧安装了 ISA PnP 设备,那么要意识到您必须避免设备间端口和 IRQ 的冲突。两个设备不能共享端口;每个设备 必须 拥有它自己的端口。这同样适用于 DMA 通道。除了一些例外情形,ISA 设备也不能共享 IRQ。如果有 非-PnP 设备,那么必须手工配置每个设备,以使得它不与其他设备相冲突。PnP 能够做的事情是自动执行配置。不过,如果有某些 ISA 设备不参与 PnP,那么这可能不会总是完全成功。为了让系统可用,可能能够使用 isapnptools(接下来会讨论)来解决冲突,或者可能不得不重新分配 非-PnP 设备上的某些端口和 IRQ。

在 2.4 内核之前,有一个名为 isapnptools 的软件包可以支持用户配置 PnP 设备。 isapnp 命令会解释配置文件(通常是 /etc/isapnp.conf)来配置 PnP 设备。这通常是在 Linux 引导过程中完成的。pnpdump 命令会扫描 PnP 设备,并转储 PnP 卡所需要的或者将要使用的资源列表。其格式可以由 isapnp 命令使用,只需要去掉实际希望使用的命令的注释。必须确保避免资源冲突。请参考 isapnp 和 pnpdump 的手册页以获得关于使用这些命令的更多资料。

从 2.4 内核起,Linux 内核就已经集成了 PnP 支持,isapnptools 软件包成为过时工具。例如,在 2002 年 5 月发布的 Red Hat 7.3 中已经将它删除了。这种支持类似于前面讨论的 PCI 支持。可以使用 lspnp 命令(kernel-pcmcia-cs 软件包的一部分)来显示关于 PnP 设备的信息。如果 BIOS 在初始化过程中找到了 PnP 设备,那么可以在 /proc 文件系统中找到其信息。文件 /proc/bus/pnp 将包含此信息。在只有 PCI 的系统中,这个文件不会出现。

IDE 硬盘驱动器

在现代 PC 系统中,Integrated Drive ElectronicsIDE)硬盘驱动器最为常见。与最初的 IBM PC-AT 相一致,这些也称为 AT AttachmentATA)。另一类使用 Small Computer System InterfaceSCSI)接口的驱动器也很流行,尤其是在服务器机器上。IDE 驱动器的优势在于价格低廉,而 SCSI 接口支持连接大量驱动器,并且在同一总线上对不同驱动器进行重叠操作的能力更强,因此具有更高的潜在性能。

一种名为 Serial ATASATA)的新类型驱动器最近进入了市场。SATA 规范试图突破 ATA 规范的某些限制,同时保持与 ATA 的有效兼容。

标签: