硬件设备发生冲突的基本原理

09-06

玩电脑的朋友很多都有过这样的经历:当你在电脑加上某个新的板卡后,常会导致整个电脑使用不正常。于是往往抱怨所买板卡的质量不好,其实此类问题也许并不与新卡的质量有关,而是因为它和电脑上其它设备之间产生了设备冲突。

一个计算机设备要能正常工作,必须要通过一定的系统资源与主机进行通信。但当新的板卡装入计算机后,往往会与已有的计算机设备发生资源冲突,而不能正常工作。最常见的也是最容易出现的资源冲突就是IRQ、DMA和I/O冲突。首先,让我们了解一下IRQ、DMA和I/O的概念。

1、IRQ(Interrupt ReQuest)

意为中断请求,每一个设备都有一个IRQ,用以向CPU发送服务请求,称为中断。一般来说,计算机有16个中断线与各种需要用中断方式工作的不同外设相连(每个中断线有一个标号也就是中断号),当一条中断线被激活后,CPU就会立即停下当前的工作,装载一定的中断处理子程序(中断服务程序),这个程序执行完成以后,系统回到刚才的断点,继续原来的工作。如果两个设备拥有一个中断号计算机系统中的某些部分就会停止工作,甚至会导致整个计算机系统崩溃。一般来说,在我们常用的个人PC机中,中断号的分配是这样的:

IRQ 0系统时钟(系统保留) IRQ 1 键盘(系统保留)

IRQ 2系统的第二个中断请求控制器(IRQ8-15)

IRQ 3串行口2(可用) IRQ 4串行口1(可用)

IRQ 5并行口2(可用)(一般用来设置声卡)

IRQ 6软盘(系统保留) IRQ 7并行口1(一般用作打印机)

IRQ 8实时时钟(系统保留) IRQ 9 可用 IRQ 10可用

IRQ 11常用于显示卡 IRQ12 PS/2 mouse(可用) IRQ13数学协处理器

IRQ14 IDE1控制器通道 IRQ15 IDE2控制器通道(可用)

此外还有NMI非正常中断(不可屏蔽中断),如校验错。

2、DMA(Direct Memory Address)

直接存取通道。主机与外设之间的数据传送,一共有两条途径:一是用CPU来管理的数据的传送;二是用专门的芯片完成数据的传送。所谓DMA,就是不经CPU,外设同内存之间相互传送数据的通道,在这种方式下,外设利用DMA通道直接将数据写入存储器或将数据从存储器中读出,而不用CPU参与,系统的速度会大大增加。在PC机内部,DMA通道的分配如下:

DMA0可用 DMA1ECP打印口(如果设置的话) DMA2软盘控制器

DMA38位数据传送 DMA4级联DMA控制器 DMA5可用

DMA6可用 DMA7可用

3、I/O(INPUT/OUTPUT)

输入/输出端口,计算机外设与主机(CPU和内存)进行通信时,是通过接口来进行的,这个接口就叫做端口。每个端口赋与一个端口号称为地址。每一个端口都包含一组寄存器(数据寄存器、命令寄存器和状态寄存器)。每一个想和CP U通信的外设都有不同的I/O地址,在PC机内部一共有1024个地址。

从Win95开始计算机的所有IRQ号、DMA通道和I/O端口等系统资源均被操作系统接管,并由其根据情况进行智能的分配,这就是我们常说的即插即用。然而这种即插即用是有条件的:要求有即插即用的BIOS、即插即用的设备和即插即用的操作系统,三者缺一不可,否则可能会引发设备冲突。在实际安装时,由于存在非即插即用设备和即插即用设备混合安装等情况,而且即插即用设备品种规格越来越多,新设备层出不穷,而WINDOWS 95/98并非一个很完善的即插即用操作系统,常常不能正确检测和处理有关设备的资源情况,特别是在安装设备较多的情况下, 由于各种板卡的中断、DMA通道、I/O地址大部分都有自己的缺省值,如果碰巧两个板卡使用了同样的资源,操作系统又无法正常处理,就会引起冲突。这就是设备发生冲突的重要原因之一。

此外有些板卡由于设计上有特殊之处(比如耗电过大),或者选料不严、制作工艺不精甚至固件代码编写不完善等问题,也可能与另外的板卡难以“和平”共处。