防止PCI/PCI-X/PCIExpress链路中的错误传播的方法转让专利

申请号 : CN200680018562.2

文献号 : CN101185064B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : B·迪普拉西多J·默里V·楼M·戈尔施米特E·迪阿默

申请人 : 英特尔公司

摘要 :

实施例是一种方法和装置,用于在使用PCI、PCI-X或PCIExpress链路的计算机系统中防止在从外围设备的I/O处理器到主机的传输中发生错误的传播。实施例检测到传输中的错误,可以关闭传输路径,并且进一步在可以将确认消息发送到主机之前截取该确认消息。

权利要求 :

1.一种用于报告I/O事务中的错误的方法,包括:在耦合到总线的外围设备处接收I/O事务;

为所述I/O事务加上索引标记;

利用包含在所述外围设备中的队列,对所述I/O事务进行排队;

利用包含在所述外围设备中的错误检测器来检测所述I/O事务中的错误;以及响应于所述错误产生错误报告。

2.根据权利要求1所述的方法,还包括:在所述总线上启动所述I/O事务的传输;以及响应于所述错误,中断所述I/O事务的传输。

3.根据权利要求1所述的方法,还包括:在所述总线上启动用于所述I/O事务的确认消息的传输;以及响应于所述错误,在所述确认消息在所述总线上传输之前截取用于所述I/O事务的确认消息。

4.根据权利要求2所述的方法,还包括:响应于所述错误,清空所述队列。

5.根据权利要求1所述的方法,其中所述索引包括所述事务的源地址、所述事务的目的地地址或I/O号中的一个或多个,以识别所述事务。

6.一种用于报告I/O事务中的错误的装置,包括:被耦合用于在计算机系统的总线上传输数据事务的总线接口;

耦合到所述总线接口的写逻辑,用于为所述数据事务加上索引标记;

耦合到所述写逻辑的队列,用于对所述加过标记的数据事务进行排队;以及耦合到所述队列的错误检测器,用于检测所述加过标记的数据事务中的错误,其中,所述装置是所述计算机系统的外围设备。

7.根据权利要求6所述的装置,还包括:耦合到所述错误检测器的错误报告逻辑,用于在所述错误检测器检测到错误后产生错误报告。

8.根据权利要求7所述的装置,还包括:耦合到所述错误检测器的清空逻辑,所述清空逻辑截取对应于所述加过标记的数据事务的确认消息。

9.根据权利要求8所述的装置,所述清空逻辑还中断所述加过标记的数据事务的传输。

10.根据权利要求9所述的装置,所述清空逻辑还清空所述队列。

11.一种用于报告I/O事务中的错误的计算机系统,包括:总线;

外围设备,其具有经由I/O接口耦合到所述总线的数据存储设备所述I/O接口包括:总线接口,用于接收I/O事务,

写模块,用于为所述I/O事务加上索引标记,耦合到所述写模块的队列,用于对所述总线接口处的所述I/O事务进行排队,耦合到所述队列的错误检测器,用于检测所述总线接口处的所述I/O事务中的错误,以及耦合到所述错误检测器的错误报告模块,用于响应于所述错误产生错误报告;

耦合到所述总线的网络接口;以及

耦合到所述网络接口的光缆。

12.根据权利要求11所述的计算机系统,其中,所述I/O接口还包括:耦合到所述错误检测器的清空模块,用于响应于所述错误中断所述I/O事务的传输。

13.根据权利要求12所述的计算机系统,其中,所述清空模块还用于截取所述I/O事务的确认消息。

14.根据权利要求13所述的计算机系统,其中,所述清空模块还用于响应于所述错误清空所述队列。

说明书 :

防止PCI/PCI-X/PCI Express链路中的错误传播的方法

技术领域

[0001] 本发明的实施例涉及一种防止计算机总线,尤其是PCI、PCI-X或PCI Express链路中的错误传播的方法。

背景技术

[0002] 如现有技术所公知的,总线是一种子系统,该子系统通过同一组互联线路在各种计算机组件之间或多台计算机之间传输数据和/或功率。历史上各种总线方案一直致力于解决处理器要求与存储器和外围设备通信以便共享资源、以及在总线的各种部件之间匹配时钟速度和通信机制的问题。
[0003] 一种早期这样的方案是Intel的外围部件互连(PCI)总线,20世纪90年代早期出现了该PCI总线的第一种形式。在开发这种总线的时候,将该PCI总线设计为向连接到其上的外围设备提供彼此之间的快速访问以及到系统存储器的快速访问。此外,尤其是在实施PCI总线的初期阶段,主处理器可以以接近主处理器原生速度的速度访问外围设备。
[0004] 第二代方案的PCI Extended(或者,简称为PCI-X)主要通过使总线宽度从32位加倍到64位并提高基本时钟速率更新了PCI规范。增大的总线宽度和时钟速率的结合显著增大了总线的理论总吞吐量;然而,实施该PCI-X总线架构的较为昂贵的成本在过去还是现在都将这种性能的提升抵消了,至少在商业实用性方面。例如,伴随更快的总线速度和宽度而来的分别是增大的噪声灵敏度和串扰。此外,增加的总线宽度使得每个外围设备置于总线上的负载更大,进一步向已经对噪声灵敏的总线注入噪声。最后,每个外围设备都需要32个以上的管脚,这增大了制造外围设备卡及其连接的主板的成本。总之,PCI-X总线相对于第一代PCI提供了更大的吞吐量,不过同时放大了PCI总线的固有问题。
[0005] 随着提高计算机系统的各个外围设备之间的通信速度的需求的不断增大,对于能够支持和管理更高带宽通信的总线的需求也不断增大。第三代方案为PCI Express。与PCI和PCI-X的多点下传并行总线不同,PCI Express用开关代替了多点下传总线,在点到点总线拓扑中,该开关是所有连接到其上的设备进行通信所利用的单个共享资源。代替对总线的使用进行共同仲裁,PCI Express为每个设备提供对该开关的直接和排他的访问。所述的PCI Express布置中的不同的每个设备具有其自己的通向开关的总线或链路。然后,开关建立起点到点连接并对总线流量进行路由。

附图说明

[0006] 图1示出了PCI Express总线和耦合到该PCI Express总线的多个外围设备;
[0007] 图2示出了包括存储器I/O子系统的PCI Express总线;
[0008] 图3示出了实施例的I/O接口;
[0009] 图4a示出了简要说明错误的检测、清空和报告的实施例的方法流程图;
[0010] 图4b示出了简要说明错误的检测、清空和报告的另一实施例的方法流程图;以及[0011] 图5示出了包括实施例的I/O接口的计算机系统。

具体实施方式

[0012] 将描述在PCI/PCI-X/PCI Express链路中防止错误传播的方法和装置的实施例。现在将详细参考如附图所示的这些实施例的描述。尽管将结合这些附图描述实施例,但并不是要将它们限制于此处公开的附图。相反,旨在覆盖如所附权利要求限定的所述实施例的精神和范围之内的所有备选方案、修改和等价物。
[0013] 简单地说,实施例是一种方法和装置,用于在使用PCI、PCI-X或PCI Express链路的计算机系统中防止在从外围设备的I/O处理器到主机的传输中发生错误的传播。实施例检测到传输中的错误,可以关闭传输路径,并且进一步在可以将确认消息发送到主机之前截取该确认消息。
[0014] 在传统方案中,耦合到总线的I/O处理器将数据传输到主机。传输数据之后,I/O处理器向主机发送确认消息,以确认主机收到该传输。换言之,从I/O处理器向主机的传输将传输的数据加载到主机存储器中的缓冲器。之后,该确认更新队列指针,以指向存储在主机缓冲器中的传输数据。然而,该确认通常是公布的消息(postedmessage),这是因为I/O处理器不知道主机是否收到该确认消息或何时收到该确认消息。因此,如果在路径中有错误,则发起的I/O处理器将不会指示存在错误。相反,仅仅指示了发出了确认消息。结果,随着后继传输的出现,多个错误可能会迅速地传播。
[0015] 图1示出了PCI Express总线和与其耦合的多个外围设备。例如,将主机、芯片组和存储器100耦合到PCI Express总线/开关110。耦合到PCI Express总线/开关的设备还有经由包括队列122的PCIExpress接口120进行耦合的外围设备124。类似地,外围设备134经由包括队列132的PCI Express接口130耦合到PCI Express总线/开关110。此外,外围设备N经由包括队列142的PCI Express接口140耦合到PCI Express总线/开关110,这表示可以将很多外围设备耦合到PCI Express总线/开关110。尽管特别参考PCI Express总线/开关110进行了描述,但是应该理解的是总线操作和拓扑也可以基于PCI或PCI-X。
[0016] 图2示出了耦合到PCI Express总线/开关110的外围设备的特定例子。存储器I/O子系统200(例如,外围设备124的应用)包括实施例的I/O接口120和经由内部总线210耦合到RAID控制器220(RAID控制器也包括队列230)和盘片控制器240的队列122。
如现有技术所知,RAID等同于独立磁盘冗余阵列,还指一种通过在多个盘片上保持冗余的数据实例(例如,条带化和/或镜像)来减少错误和风险的方法。此外,连接到盘片控制器
240的是盘片250。尽管示出了多个盘片,但是应该理解的是盘片250代表单个盘片和多个盘片。
[0017] 还要理解,尽管参考存储器I/O子系统进行了详细描述,但是外围设备124、134和144可以是任何能够耦合到PCI、PCI-X或PCI-Express总线的外围设备类型,包括但不限于如现有技术所知的音频外围设备、视频外围设备、图形适配器、网络适配器、总线适配器和总线桥。
[0018] 图3示出了图1和图2的I/O接口120的细节,包括实施例的错误检测逻辑、报告逻辑和清空逻辑。在实施例中,I/O接口120经内部总线接口310耦合到内部总线210并经总线接口340耦合到PCIExpress总线/开关110。之后,内部总线接口耦合到写逻辑315。写逻辑315为任何输入数据345的事务加上索引标签,并将该事务(包括索引)写入队列
122中。在实施例中,所述索引包括事务的源地址、事务的目的地地址、以及I/O号,以用于识别事务。如果随后在事务中检测到错误,该索引用于识别该事务。之后,将队列122耦合到总线接口340。然后,可以通过总线接口340将写入队列122的事务释放到PCI Express总线/开关,并随后释放到其目的地。
[0019] 耦合到队列122的输出端的还有错误检测器325,用于检测队列122所发出事务中的错误。错误检测器325利用现有技术中公知的任何错误检测方法检测队列122所发出事务中的错误。例如,奇偶校验保护、纠错码(ECC)或循环冗余校验(CRC)。在实施例中,错误检测器325通过校验奇偶性来检测队列122所发出事务中的错误。
[0020] 错误检测器325还耦合到错误报告逻辑330。当错误检测器325如上所述在事务中检测到错误时,它使错误报告逻辑330产生错误报告350。错误报告逻辑330可以基于写逻辑315针对特定事务产生的索引唯一地识别事务,以监测错误的发生并启动针对那些可恢复错误(即软错误)的恢复程序。
[0021] 除错误报告逻辑330之外,错误检测器325还耦合到清空逻辑335。除了如所介绍那样触发错误报告逻辑330之外,错误检测器325在检测到队列122所发出事务中的错误时还触发清空逻辑335。清空逻辑335通过控制总线接口340起作用,以阻塞来自直接上游的确认消息。更具体而言,通过控制总线接口340,在错误检测器325检测到错误之后,清空逻辑335中断队列122和PCI Express总线/开关110之间的传输路径并截取确认消息,使得事务的目的地忽略该事务。
[0022] 除了中断队列122和PCI Express总线/开关110之间的传输路径之外,清空逻辑335还耦合到写逻辑315并用于在错误检测器325检测到错误时清空队列122。通过清空所有事务的队列122,清空逻辑通过防止后续事务被错误感染而阻止了错误的传播。
[0023] 图4a示出了实施例方法的流程图。例如,在经由内部总线210的数据345通过内部总线接口310到达I/O接口120时,该方法开始。之后,在写逻辑接收数据事务345(410)。收到事务之后,写逻辑为事务加上索引标记并将事务转发到队列(420)。在队列释放事务时,检测事务中的错误(430)。如果不存在错误,事务作为输出数据355通过总线接口340继续行进到PCI Express总线/开关。如果检测到错误,则产生错误报告(440)。此外,中断事务传输(例如,通过总线接口340)(450),并截取针对该事务的确认消息(460)。之后,清空该队列(470)。
[0024] 图4b示出了根据另一实施例的方法的流程图。图4b的方法中的附图标记相同的部分反映了图4a所示的方法。在实施例中,尤其是对于使用PCI-X总线的实施例而言,将不会中断事务传输。换言之,图4b的方法省去了图4a中的过程方框450。此外,对于使用PCI Express总线的实施例而言,可以任选地中断事务传输,或者仅在可以适用图4a的方法、图4b的方法或这两种方法的特定情况下进行中断。
[0025] 图5为电子系统的一个实施例的方框图。图5中所示的电子系统用于表示一系列电子系统(有线的或无线的),例如包括台式计算机系统、膝上型计算机系统、蜂窝电话、包括具备手机功能的PDA在内的个人数字助理(PDA)、机顶盒。备选的电子系统可以包括更多、更少和/或不同的组件。
[0026] 电子系统500包括用来交换信息的总线505或其他通信设备以及耦合到总线505并可以处理信息的处理器510。尽管所示的电子系统500具有单个处理器,但是电子系统500可以包括多个处理器和/或协处理器。电子系统500还可以包括耦合到总线505的随机存取存储器(RAM)或其他动态存储设备520(被称为主存储器),其可以存储信息和处理器510所能够执行的指令。主存储器520还可以用来存储处理器510执行指令期间的临时变量或其他中间信息。
[0027] 电子系统500还可以包括耦合到总线505的只读存储器(ROM)和/或其他静态存储设备530,其可以为处理器510存储静态信息和指令。数据存储设备540可以耦合到总线505以存储信息和指令。诸如磁盘或光盘等数据存储设备540以及相应的驱动器可以耦合到电子系统500。
[0028] 电子系统500还可以经由总线505耦合到显示设备550,例如阴极射线管(CRT)或液晶显示器(LCD),以向用户显示信息。包括字母数字键和其他键的字母数字输入设备560可以耦合到总线505,以将信息和命令选择传送到处理器510。另一种用户输入设备是光标控制器570,例如鼠标、跟踪球或光标方向键,以将方向信息和命令选择传送到处理器510并控制光标在显示器550上的运动。
[0029] 电子系统500还可以包括网络接口580以提供对例如局域网等网络的访问。网络接口580可以包括例如具有天线585的无线网络接口,天线585可以代表一个或多个天线。网络接口580还可以包括线缆590,其可以代表一个或多个以太网电缆、同轴电缆和/或光缆。在一个实施例中,网络接口580例如可以通过符合IEEE 802.11b和/或IEEE 802.11g标准来提供对局域网的访问,无线网络接口例如可以通过符合Bluetooth标准来提供对个人局域网的访问。还可以支持其他无线网络接口和/或协议。除了经由无线LAN标准进行通信之外,或者取代经由该无线LAN标准进行通信,网络接口580例如可以利用时分多址(TDMA)协议、全球移动通信系统(GSM)协议、码分多址(CDMA)协议和/或任何其他类型的无线通信协议来提供无线通信。
[0030] 尽管没有图示,但是应该理解各种设备(例如,处理器510、存储器520、ROM 530、存储设备540、显示设备550、字母数字输入设备560、光标控制器570和网络接口580)之间经由总线505的通信是由上述实施例的I/O接口管理的,以便通过在发生错误时检测、报告并清空错误来减轻错误的传播。
[0031] 本领域的技术人员将会认识到实施例的简洁性在于,其通过PCI、PCI-X或PCI Express总线防止了错误的传播。