一种PCI/PCIe设备状态的监测卡及千兆网卡链路监测方法

文档序号:9787299阅读:356来源:国知局
一种PCI/PCIe设备状态的监测卡及千兆网卡链路监测方法
【技术领域】
[0001]本发明公开一种能够能够对PCI/PCIe设备的工作状态进行实时监视的监测卡及其应用,具体涉及一种通过周期性访问其它PCI/PCIe设备的寄存器或存储器以获得这些PCI/PCIe设备工作状态的PCI/PCIe插卡及其在千兆以太网监测时的应用。
【背景技术】
[0002]在实践中,人们经常有需要实时感知PCI/PCIe设备某些状态变化的需求,而在实现上,这些PCI/PCIe设备有时并不会实时的将它们的所有状态变化都以中断方式报告给处理器,比如,按照千兆以太网的相关协议,当千兆以太网卡的底层通信链路断开时,虽然此千兆以太网卡的链路状态寄存器会反映这一事实,但千兆以太网卡并不会向上报告链路断开,而是等到由maxwait_timer定时器在350ms左右没有收到来自物理层的数据时,才向处理器报告中断。这样的处理方式会影响系统对于PCI/PCIe设备状态变化的实时响应,比如造成无法及时进行网卡切换。
[0003]比较简单的一种方式是由软件定期轮询这些PCI/PCIe设备的状态寄存器,这种方式的缺点是:1)若轮询周期过短,会对计算机系统的性能造成影响;2)若轮询周期过长,会造成不能及时发现PCI/PCIe设备的状态改变。
[0004]也可以采取定制PCI/PCIe设备的方式,比如Marvel在其专利US7835269B1中,提出了定制千兆以太网卡的方式,来实时获得链路断开事件。但这种方式受限于具体的PCI/PCIe硬件设备,不具有通用性。

【发明内容】

[0005]针对以上问题,本发明提出一种可定期监测PCI/PCIe设备状态的监测卡,该监测卡具有PCI/PCIe插口,插入到包含被监测PCI/PCIe设备的计算机中,其特征在于:该监测卡周期性读取被监测PCI/PCIe设备的指定存储空间,并在读取的值不满足特定条件时,执行该监测卡被事先设定应执行的操作。
[0006]该监测卡可能被设定为在读取到不满足特定条件的值时,修改PCI/PCIe空间上特定存储单元的值(以使得拥有该特定存储单元的PCI/PCIe设备产生中断),或者自行向处理器发送中断。
[0007]—、遇到异常自行上报中断情形
[0008]在所述监测卡自行通过中断上报读取到异常值时,若所述监测卡被用于监测PCI/PCIe上多个1地址(如:同一个PCI/PCIe设备的多个1寄存器,或多个不同的PCI/PCIe设备),为了方便上层软件,所述PCI/PCIe卡可包括计算机主机处理器可通过PCI/PCIe访问的异常地址寄存器,且在向处理器报告中断前,将出现异常读取值的PCI/PCIe上的被监测1地址写入此异常地址寄存器。
[0009]在所述监测卡在出厂前无法预先知道需要监视的PCI/PCIe总线上具体哪些1地址时,所述监测卡对上层软件提供监视地址写入接口,用户可通过软件,向所述监测卡写入监测地址。
[0010]二、遇到异常修改PCI/PCIe空间上特定存储单元的值
[0011]在所述监测卡通过“修改PCI/PCIe空间上某寄存器的值”,使得拥有此被修改寄存器的PCI/PCIe设备上报中断、且所述监测卡在出厂前无法预先知道在监测到异常值时需要修改哪个地址的值时,所述监测卡对上层软件提供修改地址写入接口,用户可通过软件,向所述监测卡登记“供监测卡用来上报异常的、PCI/PCIe空间上的特定存储单元地址”。
[0012]进一步,针对可以自行上报中断的监测卡,本发明提出一种使用该监测卡监测千兆以太网物理链路断开的方法,其特征在于:
[0013](I)在监测开始前,通过软件将千兆以太网卡的链路状态寄存器的PCI/PCIe地址以及所述链路状态寄存器在链路正常时的值写入所述监测卡,并令所述监测卡开始对所述链路状态寄存器的值进行监测;
[0014](2)所述监测卡的中断处理程序在收到中断后,执行系统设定的事件通知操作。
[0015]在使用中,系统设定的动作可以是唤醒关心网络链路变化的任务、向关心网络变化的任务投送事件等。
[0016]针对通过修改PCI/PCIe空间上特定存储单元值上报“读取到异常值”的监测卡,本发明提出一种使用该监测卡监测千兆以太网物理链路断开的方法,其特征在于:
[0017](I)在监测开始前,通过软件将千兆以太网卡的链路状态寄存器的PCI/PCIe地址以及所属链路状态寄存器在链路正常时的值写入所述监测卡,并令所述监测卡开始对所述链路状态寄存器的值进行监测;
[0018](2)通过软件将被监测千兆以太网网卡的“设置链路状态改变中断”的方法写入所述监测卡
[0019]此时,根据具体千兆以太网网卡的不同,“设置链路状态改变中断”的方法可能不同,比如对于Intel的千兆以太网卡,此方法包括千兆网卡中断寄存器的地址、千兆网卡中断寄存器中链路状态改变位、前轴网卡中断寄存器的字长、千兆网卡中断寄存器中链路状态改变位指示“千兆网卡应产生中断”时,该位的取值。
【附图说明】
[0020]图1为典型实施方式中,采用“自行上报中断方式”工作的所述监测卡的硬件逻辑结构图。在ROM中存储了所述监测卡的固件。在有的实现方式中,R0M、处理器、RAM可能由单片机实现。因绘制空间有限,将地址寄存器O简写为地址O,正常值寄存器O简写为H值0,使能寄存器O简写为使能O,字长寄存器O简写为字长0,其它寄存器类推。
[0021]在通过“修改PCI/PCIe空间上特定存储单元的值”的方式来上报“读取到异常值”时,所述监测卡可以没有中断自行上报能力,也可以没有异常地址寄存器,但其监视对象寄存器组中应增加上报地址寄存器、上报字长寄存器、上报位置寄存器、上报方式寄存器的存储区域。如,若上报地址寄存器O的值为0xfd001004,上报字长寄存器O为4,上报位置寄存器O的二讲制倌为01000000,上报方式寄存器O的倌为I,表示当监测卡从地址寄存器O所指示的地址读取到的值不为正常值寄存器O所包含的值时,通过设定“PCI/PCIe空间上开始地址为0xfd001004的32位数”的第6位为1,进行异常情况报告。
[0022]图2为采取“自行上报中断方式”工作的所述监测卡对一个监测记录的处理流程。所述监测卡在加电后执行的无限循环中,逐个对每个监测记录执行此处理流程。本流程显示的为“当监测记录对应的地址包含非正常值时,暂时禁用此监测记录”的情形。
[0023]在通过“修改PCI/PCIe空间上特定存储单元的值”的方式来上报“读取到异常值”时,所述监测卡在读取到异常值时,执行修改上报地址寄存器所指定PCI/PCIe空间内存储单元的操作,本领域工程技术人员可参阅图1中相应部分来了解其工作过程。
【具体实施方式】
[0024]一、组成结构
[0025]图1为本发明的一种典型实施方式。此实施方式采用“发现异常时自行上报中断”的方式工作。本发明所述监测卡在内部由PCI/PCIe接口模块和用于存储监测卡固件的R0M、处理器、和RAM组成,他们之间通过内部总线连接,在使用时,所述监测卡被插入包含待监测PCI/PCIe设备的计算机的空闲PCI/PCIe插槽中。
[0026]所述PCI/PCIe接口模块除了通过PCI配置空间向计算机软件暴露中断号寄存器之外,还对外部软件暴露一组可读写的1寄存器,这些1寄存器被逻辑上划分为两组,一组中只有一个寄存器,该寄存器被称作异常地址寄存器,另外一组寄存器被称作监测对象寄存器组;监测对象寄存器组又被逻辑划分为包括若干个小组,其中每个小组包括一个地址寄存器、一个正常值寄存器、一个字长寄存器和一个使能寄存器,每个这样的小组被称作一个监测记录。在所述监测卡加电后,监测对象寄存器组中所有的监测记录的使能寄存器均为0,表示此监测记录处于非“使能”状态。
[0027]比如:若监视对象寄存器组中地址寄存器O为OxfdOOlOOO, lH常倌寄存器O为1,使能寄存器O为1,字长寄存器O为4,则表示现在已开启对于PCI/PCIe上地址为OxfdOOlOOO的4字节数据的实时监测,并在从该地址读取到的值不为I时,向计算机的处理器发送中断信号。异常地址寄存器用于向计算机软件报告出现异常读取值的具体PCI/PCIe地址,如当若监视对象寄存器组中地址寄存器O为OxfdOOlOOO,正常倌寄存器O为1,使能寄存器O为1,字长寄存器O为4,若所述监测卡通过PCI/PCIe读取到地址为OxfdOOlOOO的32位的寄存器中包含的值不为I时,将OxfdOOlOOO写入异常地址寄存器,并向计算机的处理器发送中断信号。
[0028]当计算机软件从异常地址寄存器读取了 PCI/PCIe地址后,应将异常地址寄存器清零,以允许所述检测卡继续通过中断上报其它包含异常值的PCI/PCIe地址。
[0029]对于“在监测到异常值时修改PCI/PCIe设备寄存器”的监测卡,监视记录中还应该包括上报地址寄存器、上报地址字长寄存器、上报方式(比如包括上报位置寄存器和上报方式寄存器,其中上报位置寄存器指示在上报时应修改上报地址寄存器所指定PCI/PCIe地址的哪些位,上报方式寄存器指示在上报时应如何设置被上报位置寄存器所指定的这些位)。此时可以没有异常地址寄存器及其相关操作,所述监测卡也可以没有中断触发能力,本领域工程技术人员可自行得出相应设计,此处不做详述。
[0030]二、软件和固件流程
[0031]所述“发现异常时自行上报中断”的监测卡的驱动程序执行包括如下步骤的流程,向所述监测卡写入需要监测的PCI/PCIe地址和判断该寄存器内容是否合法的判断条件:
[0032]CONFl寻找所述监测卡的监视对象寄存器组中的任意一个、使能寄存器为O的监测记录;
[0033]C0NF2将“待监视的PCI/PCIe地址、该地址对应的存储长度、该地址在正常情况下所应该包含的值”记录到步骤CONFl所找到的监测记录的地址寄存器X、字长寄存器X, I常值寄存器X中,其中X表示寻找到的监测记录编号;
[0034]C0NF3将使能寄存器x设詈为I,其中x与步骤C0NF2中的地址寄存器x中的x取值相同。
[0035]所述监测卡的
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1