PCI Error Handling
PCI Error Handling
在传输过程中,PCI设备能够检测、汇报地址段
或者数据段
的校验错误。
借助PAR信号,PCI设备能够完成“偶校验”。
如果传输的地址或者数据中,值为“1”的位数是奇数,那么主设备(Master Device)会将PAR信号设置为“1”,从而使整体上“1”的位数变为偶数。
目标设备(Target Device)收到地址或数据之后进行校验。如果目标设备检测到数据传输错误,就触发PERR#(parity error)
信号。
数据传输错误一般是可以修复
的,例如,读取内存时出错,只需要重新发送一次内存读请求就可以了。PCI没有硬件的自动纠错机制
,所以,任何传世修复错误的手段(例如,重新发送请求)都需要软件驱动
。
当地址传输过程中出错时,处理方式与数据错误有很大不同。地址出错时,接收到请求的目标设备也就错了。这种情况下,没办法知道地址的哪些位是错的,也不知道总线上哪个设备对这个请求进行了响应,所以也就没有办法进行错误修复
。地址出错时,检测出错误的设备会触发SERR#(system error)引脚
信号,这通常会导致系统错误处理流程(System Error Handler)
的调用。在老式的机器上,一般会导致蓝屏。
在老式的机器上,PERR#和SERR#信号都被连接到了南桥
的错误逻辑(Error Logic)上,从而触发CPU的NMI信号(non-maskable interrupt signal)
,导致系统停止运行
。