虚拟中断模式接口和用于虚拟化中断模式的方法

文档序号:6479759阅读:289来源:国知局
专利名称:虚拟中断模式接口和用于虚拟化中断模式的方法
技术领域
本发明涉及中断和在系统的部件之间的中断模式兼容性并且特别地涉及一种用 于代表中断生成设备来虚拟化中断模式从而中断生成设备可以与其它系统部件恰当地互 操作的方法。
背景技术
在前几代计算机硬件和计算机系统中,多种不同类型的并行总线用于将部件互 连(比如通过主桥将外围I/O设备互连到处理器和存储器总线)。起初,包括并行信号 线以实现同时传送字节、16位的字、32位的字或者64位的字的总线提供比串行通信介质 (其中位值被接连地连续传送并且由接收端口合并成字节、16位的字、32位的字或者64 位的字)更高的数据传送带宽。然而,在时钟速率高时,在总线中的并行信号线之间的 信号偏斜可能变成越来越难解决的问题,并且随着在微处理器和其它集成电路内的特征 密度的减少,将集成电路部件与并行总线连接所需要的大量管脚表示着相对于处理能力 而言越来越高的成本和空间约束。因而,与较旧的并行总线相比,串行通信介质现在可 以提供更大的数据传送带宽、更易于并入系统中、对集成电路设计和封装施加更少约束 并且还更为经济。较旧的基于总线的通信介质(包括外围部件互连(“PCI”)和高级 技术附件(“ΑΤΑ”))正在被更快、更经济的串行通信介质如PCIe和SATA所取代。较新技术取代较旧技术的过程一般为渐进的,因而致力于在较新技术中并入向 后兼容性。例如,较新的PCIe提供向后兼容性特征,从而设计成与基于PCI的部件对 接的较旧部件可以与较新的基于PCIe的部件对接。然而,尽管致力于在引入较新技术期 间提供向后兼容性,但是仍然出现问题。作为一个例子,虽然较新的PCIe串行通信介质 和控制器使用通过较新的串行通信介质传输的消息来提供对PCI通信介质中使用的基于 多专用管脚和迹线的中断机制的模拟,但是新的PCIe兼容的外围设备(如I/O设备控制 器)可能无法实施较旧的PCI中断模式。虽然不支持较旧的基于PCI的中断模式的较新 的基于PCIe的设备与设计成支持基于PCIe的部件的计算机系统正确地互操作,但是这样 的设备尽管与PCIe互连兼容却仍然可能无法在用PCIe互连改进的较旧计算机系统中正确 工作。在技术过渡期间,并入较旧技术的部件和较新技术的部件二者的计算机系统的设 计者、制造商、销售商和用户因此不断认识到需要促进桥接较新技术的部件与较旧技术 的部件之间的不兼容性(比如在设计成与继续在并入或者连接到较新技术的部件的计算 机系统中使用的较旧技术的部件对接的基本输入输出系统(“BIOS”)层与操作系统之 间的不兼容性)的方法和设备。

发明内容
本发明的实施例针对用于代表包括I/O设备控制器的中断生成设备来虚拟化中 断模式从而缺乏较旧中断模式的较新中断生成设备可以用于继续依赖于较旧中断模式的 系统中的方法。在本发明的一个实施例中,修改PCIe交换机或者基于PCIe的主桥,或者引入新部件以提供中断模式虚拟化功能或者虚拟中断模式接口,其代表中断生成设备 (如I/O设备控制器)向操作系统、BIOS层和与I/O设备控制器通信的其它部件提供虚拟 中断模式。通过提供中断模式虚拟化特征,尽管中断生成设备不再支持较旧技术的中断 模式,主桥、PCIe交换机或另外的部件仍向上游部件提供较旧技术的中断模式的接口, 该上游部件包括一个或多个执行BIOS和/或一个或多个操作系统的CPU。


图1示出了包括PCI并行互连的简单 计算机系统的一般化框图。图2提供了包括PCIe串行互连而不是PCI并行互连的简单计算机系统的高级框 图式表示。图3A-G图示了通用计算机系统内的I/O设备控制器与运行操作系统程序的CPU 之间的通信。图4图示了 PCI总线架构中运用的INTx中断机制。图5A-C图示了较新的几代PCI中和PCIe中运用的MSI中断机制。图6示出了一种使PCIe与早于PCIe外围互连的较旧操作系统和BIOS层相兼容 的基本方法。图7图示了近来已经出现的兼容性问题。图8图示了根据本发明实施例的一种克服图7中所示不兼容性问题的方法。图9A-F提供了控制流程图,这些控制流程图示出了表示本发明一个实施例的虚 拟INTx接口在PCIe交换机内的逻辑实施。图10图示了包括交换机平台的高端计算机系统。
具体实施例方式本发明针对一种可以并入位于中断生成设备(如I/O设备控制器)与中断接收 CPU之间的交换机、主桥或者其它部件中的中断模式虚拟化功能。本发明的一个实施例 是在PCIe交换机或者PCIe兼容的主桥中包括的中断模式虚拟化特征。然而,中断模式 虚拟化可以并入于许多不同类型的通信介质内的许多不同部件中。图1示出了包括PCI并行互连的简单计算机系统的一般化框图。计算机系统包 括分别通过处理器系统总线110、存储器总线112、高级图形端口( “AGP” )总线114 和内部主桥总线116与存储器104、图形再现设备106和I/O桥108互连的中央处理单元 (“CPU” ) 102。I/O桥108用于将附加设备互连到存储器桥118并且从而互连到存储器 104和CPU 102。这些附加设备包括经由ATA链路122与I/O桥互连的盘驱动器120、 经由其它类型的通信介质(如串行链路126)与I/O桥108互连的一个或者多个I/O设备 控制器124,以及经由PCI总线136互连的若干I/O设备控制器130-134。I/O桥108与 存储器桥118共同组成主桥138PCI总线136是真实的并行总线,通过在连接到PCI总线的各种设备之间的争用 来获得对该总线的接入。总线地址对应于PCI总线上的用于设备的时隙,不同类型的PCI 总线提供不同数目的时隙。获得PCI总线的设备可以将PCI总线的整个带宽用于向所选 目标设备传送数据。虽然在图1中未示出,但是可以通过附加桥设备将PCI总线附加地桥接到一个或者多个附加类型的数据总线和其它互连介质。I/O设备控制器130-134可 以控制各种类型的外围设备中的任何一种,例如包括以太网控制器,其通过外部通信介 质接收和传输数据、通过PCI总线存储和检索来自存储器104的数据、通过PCI总线存储 和检索来自存储器104的数据、生成针对CPU 102的中断并且从CPU接收命令。 通信总线(如PCI总线)包括复杂的硬件和固件并且根据分级协议层来传送数 据。关于PCI总线的海量信息在教科书中和因特网上都可以找到,该信息包括对协议 栈、编程接口、硬件操作和特性以及硬件实施的详细讨论。在过去十年间,PCI总线架构的局限性被认识到,并且随着微处理器和系统互连 的频率的增加、随着集成电路密度的增大以及随着包括以太网在内的外部通信介质的带 宽的增加已经变得更为明显。由于PCI总线架构亟需增加带宽,所以与并行总线架构关 联的关键问题限制PCI部件的操作频率可以增加的程度。另外,PCI需要用于连接各设 备的大量管脚,并且基于多管脚的连接的开支和占用空间随着可以生产的基于硅晶片的 集成电路上的特征密度持续增加而变得越来越难以负担。另外,用于接入总线的基于争 用的仲裁限制可以连接到总线的设备的数目,而同时对设备互连的需求已经开始急剧增 力口。出于所有这些原因,在过去五年间开发和部署了一种新的PCIe互连架构。PCIe提供与PCI架构的较高级协议兼容性、但其基于通过纵横式交换机管理的 连接的设备之间的直接串行通信链路。在PCIe端点与PCIe交换机之间的每个点到点互 连包括一个或者多个通道(lane),每个通道包括两对差动驱动的串行线,其中一对用于 从端点到交换机的传输,而另一对用于从交换机到端点的传输。因此,每个通道提供端 点与交换机之间的全双工通信。在PCIe端点与PCIe交换机之间的给定链路可以包括一 个、两个、四个、八个、12个、16个或者32个通道,从而可以调整用于端点与交换机之 间通信的总带宽以满足端点设备和系统的总体需求。交换机可以彼此互连以实现到大量 设备的分级扇出。图2提供了包括PCIe串行互连介质而不是PCI并行总线的简单计算机系统的高 级框图式表示。图2中所示系统的许多部件与图1中所示部件相同并且用相同标号来表 示。然而,图2中的系统运用SATA互连140这一串行通信介质而不是ATA并行总线 (图1中的122)以反映用更高带宽、更低成本的串行通信介质取代并行通信介质的发展趋 势。I/O桥108被修改成包括PCIe端口和与PCIe交换机142的多通道互连而不是与PCI 并行总线的基于多管脚的连接。PCIe交换机用作纵横式交换机用于在I/O桥与各种PCIe 端点130-135之间建立点到点互连,并且也可以提供端点设备的点到点互连。多个点到 点连接可以通过PCIe交换机同时传送数据。尽管需要改变I/O桥内的较低级协议层以适 应PCIe通信介质,但是较高级协议层与较旧的PCI协议兼容,从而I/O桥上游的系统部 件可以继续使用较旧的PCI协议来与I/O设备通信。目前,PCIe通道内的两对串行通信 线中的每对可以每秒传送2.5吉比特,对于总的全双工带宽就是每秒5吉比特。在第二代 PCIe中,带宽已经加倍,且在第三代PCIe中,带宽有望再次显著增加。图3A-G图示了在通用计算机系统内的I/O设备控制器与运行操作系统程序的 CPU之间的通信。I/O设备控制器302可以例如已经从通信或者存储设备接收到数据块 304用于传送到存储器306以供后续操作系统处理。在这样的情形中,I/O设备控制器和 操作系统可以通过存储器中的先入先出(“FIFO”)队列308来通信。FIFO队列包括队列条目阵列310、队列头指针312和队列尾指针314。如图3B中所示,I/O设备控制 器一般进行直接存储器访问,从而允许I/O设备控制器经由外围总线316、主桥318和存 储器总线320向存储器306传输数据块(图3中的304)以存储于FIFO队列308中的第一 可用队列条目322中。一般通过将模运算用于递增和递减头和尾指针来将FIFO队列作为 循环队列管理。稍后,如图3C中所示,CPU可以经由存储器总线320、主桥318和处理 器系统总线324访问入列的数据块。一般而言,CPU使入列的数据块从FIFO队列中出 列并且将数据块移到存储器的某一其它部分,操作系统或者在操作系统之上运行的更高 级程序可以随后从该存储器部分使用数据块,如 图3D中所示。可选地,数据块可以离开 FIFO队列而由I/O设备控制器放入存储器中,其中引用存储于FIFO队列中的存储数据块 而不是数据块本身。在某些情况下,经由存储器驻留FIFO队列在I/O设备控制器与CPU之间的通信 可能不是时间关键的。在这样的情况下,处理器可以无需在如图3B中所示由I/O设备控 制器使条目入列之后立即如图3C中所示访问入列的条目并且使该条目出列。然而这样的 情况是罕见的。一般而言,由于I/O设备控制器可能无规律地使数据入列到FIFO队列, 有时候迅速地使许多数据块入列到FIFO队列而有时候又长时间保持休止(quiescent),所 以在CPU上执行的操作系统需要迅速地检测由I/O设备控制器入列到FIFO的数据块并且 使这些数据块出列以使得FIFO队列不会溢出,从而I/O设备控制器不会由于FIFO队列 溢出而中断或者延迟并且从而较高级协议定时器也不会由于使得操作系统内的较高级例 程或者较高级应用程序可访问数据的延迟而到期。一般而言,有两种用于向操作系统通知I/O设备控制器已经将新条目入列到存 储器FIFO队列以供操作系统处理的不同策略。在图3E中示出了称为“轮询”的第一策 略。在该策略中,操作系统包括图3E中的简单控制流程图360所示的事件环,其中操作 系统连续执行任务362,在每个任务之后在步骤364中检查要新入列到各种FIFO队列的 条目。当如在步骤366中确定的那样在FIFO队列上检测到输入时,则在步骤368中处置 该输入。由于需要迅速检测和处置入列的数据项,所以在步骤362中执行的任务一般为 更大概念任务的很微小的部分。轮询是一种有效策略,当条目以恒定的、规则的速率被入列到FIFO队列时尤其 如此,从而可以调节轮询频率以匹配条目入列频率,并且因此很少的轮询操作被浪费用 于检查空队列。在现代计算机系统中,轮询一般过于低效而无法被频繁和广泛地使用。 检查存储器中的FIFO队列和其它数据结构以发现新输入数据的指示需要大量处理周期开 支。当I/O设备以及其它中断生成设备休止时,那些周期被徒劳地花费,而当I/O设备 以高速率突发传送数据时,轮询频率可能过低而无法防止由于流控制反压力所致的队列 溢出和数据传送中断。图3F示出了操作系统检测新入列的输入数据的一种替代方法。如图3F中所示, 在I/O设备控制器将条目入列到FIFO队列之后,I/O设备控制器生成中断信号370,其 被传输至CPU并且导致在CPU的硬件中产生的中断。中断生成导致操作系统进行的正 常指令执行序列中断并且导致分支到中断服务例程。图3G图示了从操作系统的观点来看的中断处置。在图3G中,操作系统当前正 在执行如下例程,该例程包括第一列382所表示的有序指令序列。曲线箭头如箭头380在图3G中表示执行指令和递增指令引用寄存器。I/O设备控制器在指令序列382中的指 令384执行期间生成由CPU检测的中断。在完成该指令的执行之后,执行分支到中断服 务例程(“ISR”)386,该ISR保存操作系统执行的当前上下文并且通过调用适当的中断 处理程序例程310将该中断分派到中断处理程序。中断处理程序例如可以使入列的条目 从FIFO队列中出列并且更改数据结构以指示数据的接收,从而操作系统可以随后处理数 据或者将数据传递给较高级操作系统例程或者应用程序。当中断处理程序完成执行时, 执行返回到如果未出现中断则将已经被执行的下一指令310,其中从中断处理程序的返回 一般由恢复原始被中断的操作系统例程382的上下文的从中断返回指令来促进。由于可 以用信号通知许多不同中断并且由于中断可能在时间上接近地或者甚至同时出现,所以 中断信号通知一般伴有特权级改变、关键代码中禁用中断和用于使接收的中断入栈的机 制。图4图示了在PCI总线架构中运用的INTx中断机制。如上文讨论的那样,PCI 为并行总线。在共同信号线上复用地址和数据,其中在每个周期中传送32或者64位。 如图4中所示, PCI总线402除了数据和地址信号线404之外还包括若干中断信号线406。 在PCI总线中有表示为A、B、C和D的四个中断信号线。占用PCI总线上的时隙的每 个I/O设备控制器被配置成使用四个中断之一来用信号通知CPU。如果在PCI总线时隙 中有多于四个设备,则多个设备最终分享一个或者多个中断。当主桥410检测到PCI总线 上的中断信号时,PCI总线上的主中断信号,主桥通过响应于PCI总线中断而用信号通知 高级可编程中断控制器(“APIC” )中断来将PCI总线中断信号转变成APIC 412中断。 APIC然后引发CPU中断,向CPU传递关于出现的中断的字节或者字编码信息,从而操 作系统可以使用编码的信息以确定中断的性质并且相应地处置中断。因此,如图4的下 部中所示,可以向I/O设备控制器414分配PCI总线中断A。在用信号通知该中断时, 主桥410将中断转变成APIC中断416并且用信号通知对应的APIC中断,从而APIC又引 发CPU中的适当对应中断。这一 PIC总线中断架构称为“INTx”中断机制或者“INTx 中断模式”。在PCIe和PCI总线的较新版本中,运用称为“消息告知中断”(“MSI”)机 制的不同中断机制。图5A-D图示了在较近的几代PCI中和在PCIe中运用的MSI中断机 制。如图5A中所示,支持MSI中断的I/O设备控制器提供寄存器502-504,这些寄存器 允许在CPU上运行的操作系统配置MSI中断。这些寄存器映射到CPU的地址空间,从 而CPU可以在MSI中断配置期间向寄存器写入值以及从寄存器读取值,就如同CPU向存 储器写入和从存储器读取一样。在图5A中,在I/O设备控制器中以及在系统存储器508 上方示出的虚线矩形中示出了寄存器以图示操作系统将位于I/O设备中的寄存器视为可 被操作系统访问的存储器地址空间的一部分。操作系统如向实际存储单元写入一样向这 些寄存器写入。然而,虚线指示寄存器并非存储器寄存器,而是改为位于I/O设备中。 在系统初始化期间,操作系统经历如下过程,通过该过程发现经由外围互连与CPU互连 的设备并且查询这些设备的能力。当操作系统发现能够进行MSI中断的设备并且操作系 统选择运用MSI中断机制时,那么如图5B中所示,操作系统将该意思的指示放入控制寄 存器502中。再次,操作系统向操作系统的存储器地址空间内的地址写入,然后该写入 被主桥510引导至I/O设备而不是存储器。在配置过程期间,地址寄存器503被配置有I/O设备控制器向其写入数据值以便生成中断的地址。数据寄存器504也被配置成包含数据值。该数据值的某些较低位可以由I/O设备改变以根据I/O设备请求的矢量数目以及 操作系统允许I/O设备使用的矢量的数目来指示不同中断。随后如图5C中所示,当I/O 设备控制器希望生成到CPU的中断时,I/O设备控制器向503中的地址发出存储器写入操 作,从而向该地址写入数据寄存器504中存储的数据值的修改版本以指示需要在CPU中 引发的中断类型。主桥可以检测写入操作并且将它转变成到CPU的中断,或者可选地, 可以向系统存储器执行写入,并且低级过程可以检测到这样的写入并且在CPU内生成中 断。称为“MSI-X”的新近的中断机制提供数目增加的可以由I/O设备控制器的功能用 信号通知的可能的中断矢量、增加了 I/O设备控制器可以向其写入以便生成中断的地址 的数目,并且通过附加特征提供附加灵活性。在现代设备中优选MSI中断机制,因为它 允许消除物理中断-管脚连接和迹线并且提供数目更大的不同中断信号以避免需要中断 生成设备共享给定的中断信号线。图6示出了一种使PCIe与早于PCIe外围互连的较旧操作系统和BIOS层相兼容 的基本方法。如图6中所示,符合PCIe的I/O设备控制器602、PCIe外围互连604和在 主桥606内的符合PCIe的I/O桥可以并入计算机系统中以便将计算机系统从PCI更新成 PCIe0然而,操作系统和上游部件可以保持不变,因为针对PCI协议的较高级接口也可 以用于PCIe外围互连。在串行通信架构与并行总线架构之间的不同完全封装于硬件端口 和连接以及PCI协议栈的前两层内。为了提供全兼容性,推荐新的PCIe兼容的I/O设备 控制器以提供MSI中断并且提供对较旧的INTx机制的PCIe模拟。INTx中断通过PCIe 串行通信介质作为消息来发送、但是在主桥或者另一部件中被转变以生成到CPU的较旧 式的INTx中断信号。图7图示了近来已经出现的兼容性问题。如图7中所示,还有许多计算机系统 具有继续使用较旧式的INTx中断机制702的操作系统和/或BIOS系统。如参照图6所 讨论的那样,可以更新这些系统以使用PCIe外围互连704。然而,随着越来越多系统转 为使用PCIe,许多I/O设备控制器制造商已经完全停止对较旧式的INTx中断的支持。因 此如图7中所示,系统制造商和用户可能经常尝试将缺乏对INTx中断的支持的较新的I/ O设备控制器706包括到具有设计成仅使用较旧式的INTx中断702的较旧式的操作系统 和BIOS层的系统中。事实上,缺乏对较旧式的INTx中断的支持的I/O设备控制器不能 在这样的环境中恰当工作。图8图示了根据本发明实施例的一种克服图7中所示不兼容性问题的方法。本 发明的实施例在不支持INTx中断机制的I/O设备控制器的上游引入虚拟INTx接口 802。 这一虚拟INTx接口 802可以便利地实施于如图802中所示的PCIe交换机内,但其也可以 可选地实施于I/O桥内或者实施为单独设备。虚拟INTx接口 802向操作系统提供到I/O 设备控制器的虚拟接口,其中,仅支持MSI和MSI-X中断的较新的I/O设备控制器看来 似乎支持MSI和MSI-X中断以及较旧式的INTx中断。虚拟INTx接口从并不支持INTx 中断机制的I/O设备控制器接收MSI存储器写入操作并且将这些MSI存储器写入转变成 INTx中断模拟消息,当虚拟INTx接口实施于PCIe交换机中时该INTx中断模拟消息随后 被转发至主桥804。可选地,当实施为I/O桥的一部分时,虚拟INTx接口可以将MSI存 储器写入转变成主桥804内的INTx中断模拟消息。此外,虚拟INTx接口向操作系统和BIOS层提供INTx兼容性指示和信息并且在不支持INTx模拟的虚拟化I/O设备控制器上 配置MSI中断。 图9A-F提供了控制流程图,这些控制流程图示出了表示本发明一个实施例的虚 拟INTx接口在PCIe交换机内的逻辑实施。图9A将高级的虚拟INTx实施图示为位于I/ O设备控制器与I/O桥或者主桥之间的PCIe交换机或者专用设备内的事件处置环。在步 骤902中,针对PCIe外围互连上的所有端点设备配置一组数据结构和其它信息。然后, 在包括步骤903-913的连续环中,虚拟INTx接口连续等待下一事件并且当事件与虚拟 INTx接口有关时适当地处置事件。例如,当虚拟INTx接口检测到由I/O设备控制器为 了在CPU上引发中断而传输的存储器写入操作的接收时,则在步骤905中调用例程“使 中断有效”。当虚拟INTx接口如在步骤907中检测到的那样从CPU接收到中断清除信 号时(其中CPU向I/O设备中的位或者虚拟INTx接口中的位写入),则在步骤908中调 用例程“使中断无效”。当虚拟INTx接口在步骤909中检测到操作系统或者BIOS访问 I/O设备控制器内存储的兼容性信息时,虚拟INTx接口在步骤910中调用兼容性响应例 程。当检测到的事件如在步骤911中确定的那样为主机尝试配置端点设备时,在步骤912 中调用例程“配置”。全捕获事件处理程序在步骤913中适当处置PCIe交换机内的虚拟 INTx接口可以检测到的所有其它事件。图9B提供了在图9A的步骤902中调用的例程“配置端点数据结构”的控制流 程图。在步骤914-918的for循环中,针对连接到PCIe外围互连的每个设备生成和初始 化数据结构。该数据结构可以随各种实施而变化、但是包括连接到PCIe的每个端点设备 的地址的指示和该设备的配置状态的指示。起初,配置状态为“未配置”。图9C提供了在图9A的步骤905中调用的例程“使中断有效”的控制流程图。 这一例程在步骤919中截获由I/O设备控制器或者连接到PCIe的其它中断生成设备生成 的存储器写入命令。在步骤920中,例程“中断”找到与发送中断消息的设备对应的数 据结构。当该设备如在步骤922中确定的那样被虚拟化且处于INTx中断模式时,在步 骤924中由虚拟INTx接口将中断消息转变成INTx中断模拟消息(使INTx消息有效)。 在设备被虚拟化并且在INTx中断模式中操作的情况下,在步骤925中向主桥转发转变的 INTx中断模拟消息。当设备未被虚拟化或者未在INTx中断模式中操作时,则在步骤925 中向主桥转发918中接收的原始写入命令。图9D提供了用于在图9A的步骤908中调用的例程“使中断无效”的控制流程 图。在步骤926中,例程“使中断无效”检测到由操作系统或者BIOS生成的向I/O设 备中的位的写入或者截获由操作系统或者BIOS生成的向虚拟INTx接口中的位的写入。 在步骤927中,例程“使中断无效”找到与操作系统或者BIOS将位写入操作所针对的设 备对应的数据结构。当该设备如在步骤928中确定的那样被虚拟化并且在INTx中断模式 中时,在步骤929中向主桥转发使INTx无效消息这一 INTx中断模拟消息。图9E提供了用于在图9A的步骤907中调用的例程“兼容性响应”的控制流程 图。这一例程在步骤930中截获由I/O设备控制器或者连接到PCIe的其它中断生成设备 对操作系统或者BIOS层访问包含表示设备的特性和兼容性的数据的寄存器以便促进设备 的配置的响应。如在步骤932中确定的那样,当设备的响应指示设备支持MSI和较旧式 的INTx中断二者时,或者当设备的响应指示设备仅支持较旧式的INTx中断时,则虚拟INTx接口和 PCIe交换机在步骤940中向主桥转发该响应。当设备的响应指示设备仅支 持MSI中断时,虚拟INTx接口在步骤934中更改响应以指示响应设备支持MSI中断和 INTx中断二者,并且在步骤936-937中找到和更新与设备对应的数据结构以指示设备已 经被虚拟INTx接口虚拟化。图9F提供了用于在图9A的步骤909中调用的例程“配置”的控制流程图。在 步骤950中接收如下信号或者消息,该信号或者消息表示操作系统或者BIOS尝试配置I/ O设备控制器或者连接到PCIe外围互连的其它中断生成设备。当配置信号或者消息如在 步骤952中确定的那样表示尝试初始化设备以用于MSI中断时,则虚拟INTx接口在步骤 954中找到与被配置的设备对应的数据结构并且更新数据结构以指示该设备将在MSI中断 模式中操作。然后,在步骤956中,虚拟INTx接口将配置信号或者消息转发到该设备 上。否则,当如在步骤958中确定的那样配置信号或者消息被引导至该设备以配置该设 备用于INTx中断时,则在步骤960中发现用于该设备的数据结构并且在步骤962中检查 该数据结构以确定该设备是否被虚拟化。当设备被虚拟化时,在步骤964中更新数据结 构以指示该设备被虚拟化并且在INTx模式中操作,并且将配置消息或者信号转变成MSI 配置过程。在任一情况下,然后在步骤966中向设备转发一个或者多个配置信号或者消 息。在一种情况下,当设备未被虚拟化时,可以直接传递配置消息或者信号。在设备 被虚拟化的情况下,则将INTx配置转变成MSI配置,这可能涉及到多次设备-寄存器写 入。在某些情况下,特定配置操作可能涉及到信号序列或者操作序列。通过对例程“配 置”的单独调用来单独处理序列中的所有信号或者操作,不过在步骤964中并非序列中的 所有信号或者操作都可能需要转变成MSI消息。可选地,可以实施“配置”以在一次调 用中处置序列中的所有信号或者操作。当配置信号或者消息指示既不配置MSI样式的中 断也不配置INTx中断时,则在步骤968中处置接收的配置信号或者消息。虚拟INTx接口可以实施为在图9C-F的步骤918、950和930中接收中断消息、 配置消息或者配置信号和对兼容性访问的响应的消息和/或信号接收部件,以及可以实 施为配置中断生成设备、对能力查询做出响应并且转变来自虚拟化中断生成设备的中断 消息的消息和/或信号处理部件。许多不同可选实施方式是可能的。已经在上文讨论中广义地表征了表示本发明一个实施例的虚拟INTx接口。用于 旧式INTx中断机制以及较新的MSI和MSI-X机制的设备配置、中断生成以及其它方面 的具体方法和协议可以随实施方式不同而变化。另外,本发明的替代实施例可以用来向 其它类型的通信介质和数据传送信道中引入虚拟中断接口以便为无法模拟较旧中断方法 和机制的较新的设备恢复兼容性。无论精确的实施细节和接口如何,虚拟中断接口都需 要确定哪些设备被虚拟化、需要将较旧式的设备的配置转变成较新式的配置过程,并且 需要截获较新式的中断消息或者信号以便模拟那些较新式的中断消息或者信号,从而上 游设备、固件和软件可以使用较旧式的方法和接口与设备交互。虽然按照特定实施例描述了本发明,但本发明并不打算限于这些实施例。本领 域技术人员将清楚在本发明的精神内的修改。例如,虚拟INTx中断接口可以并入PCIe 交换机中、作为PCIe交换机与主桥之间的单独分立部件、位于主桥内,或者可能作为分 立部件位于主桥上游。可以使用任何数目的不同软件、固件和硬件模块、使用不同类型 的逻辑电路,以及使用不同编程语言、控制结构、数据结构以及通过改变其它这样的编程和设计变量来实施虚拟INTx中断接口。在具有多个交换机和附加扇出级的更复杂的 PCIe通信介质中,虚拟INTx中断接口可以实施于最高级交换机中或者可以可选地实施于 每个交换机中以处置直接连接到该交换机的任何端点设备。虽然已经在简单计算机系统 的背景中讨论了虚拟INTx接口,但是虚拟INTx接口可以用在包含于包括刀片外壳的高 端计算机系统中的复杂切换平台中。图10图示了包括交换机平台的高端计算机系统。交 换机平台可以在下游P2P部件如下游P2P部件1004中、在上游P2P部件如上游P2P部件 1006中提供虚拟INTx接口,或者将虚拟INTx接口提供为交换机内的单独层或者部件。
前文描述出于说明的目的而使用具体术语以提供对本发明的透彻理解。然而本 领域技术人员将清楚实现本发明无需具体细节。出于图示和描述的目的而提供对本 发明 具体实施例的前文描述。它们并非打算穷举本发明或者使本发明限于公开的精确形式。 鉴于上述教导许多修改和变化是可能的。实施例被示出和描述以便最佳说明本发明的原 理及其实际应用,由此使本领域技术人员能够以与设想的具体用途相适应的各种修改最 好地利用本发明和各种实施例。本发明的范围意欲由所附权利要求及其等效物限定。
权利要求
1.一种虚拟中断模式接口,包括消息和/或信号接收部件,其接收中断消息、配置消息或者配置信号以及对访问兼 容性寄存器的响应;以及消息和/或信号处理部件,其当中断生成设备不支持第二中断模式并且所述消息和/或信号接收部件已经接收到 针对所述中断生成设备的用以将所述中断生成设备配置成在所述第二中断模式中操作的 配置消息或者信号时,将所述中断生成设备配置成在第一中断模式中操作,所述中断生 成设备之后虚拟地在所述第二中断模式中操作;并且将所述消息和/或信号接收部件从虚拟地在所述第二中断模式中操作的一个或者多 个中断生成设备接收的每个第一中断模式中断消息转变成第二中断模式中断,并且向接 收的第一中断模式中断消息的预计接收方转发所述第二中断模式中断。
2.根据权利要求1所述的虚拟中断模式接口,其中所述第二中断模式为PCI INTx中断模式;并且 其中所述第一中断模式为PCIe MSI或者MSI-X中断模式。
3.根据权利要求2所述的虚拟中断模式接口,其被并入以下各项之一内 在所述中断生成设备与PCIe交换机之间引入的设备;所述PCIe交换机; 主桥设备;以及在所述PCIe交换机与主桥设备之间引入的设备。
4.根据权利要求3所述的虚拟中断模式接口,其中所述虚拟中断模式接口并入其中的所述PCIe交换机、主桥设备或者分立设备通 过PCIe互连与所述中断生成设备互连;并且其中所述虚拟中断模式接口并入其中的所述PCIe交换机、主桥设备或者分立设备与 至少一个CPU互连,响应于由所述中断生成设备生成的中断消息而在所述CPU上引发中 断。
5.根据权利要求1所述的虚拟中断模式接口,还包括用于每个中断生成设备的数 据结构,其包括所述中断生成设备的中断模式和当前状态的指示。
6.根据权利要求5所述的虚拟中断模式接口,其中初始化与每个中断生成设备对应的 数据结构以指示尚未配置所述中断生成设备。
7.根据权利要求6所述的虚拟中断模式接口,其中当所述消息和/或信号接收部件从 中断生成设备接收到对访问兼容性寄存器的响应时,所述消息和/或信号处理部件确定所述响应是否指示所述中断生成设备仅能在所述第一中断模式中操作; 当所述响应指示所述中断生成设备仅能在所述第一中断模式中操作时,更改所述响 应以指示所述中断生成设备能够在所述第二中断模式和所述第一中断模式二者中操作、 更新表示所述中断生成设备的数据结构以指示所述中断生成设备被虚拟化并且向兼容性 响应的预计接收方转发更改的响应;并且当所述响应指示所述中断生成设备能够在所述第二中断模式和所述第一中断模式二 者中操作时,或者当所述响应指示所述中断生成设备仅能在第二中断模式中操作时,向 所述兼容性响应的预计接收方转发所述响应。
8.根据权利要求6所述的虚拟中断模式接口,其中当所述消息和/或信号接收部件接 收到针对中断生成设备的配置消息或者配置信号时,所述消息和/或信号处理部件确定所述配置消息或者配置信号是否表示尝试将所述中断生成设备配置成在所述第 一中断模式中操作;当所述配置消息或者配置信号表示尝试将所述中断生成设备配置成在所述第一中断 模式中操作时,向所述中断生成设备转发所述配置消息或者配置信号;以及当所述配置消息或者配置信号表示尝试将所述中断生成设备配置成在所述第二中断 模式中操作时,根据表示所述中断生成设备的数据结构确定所述中断生成设备是否被虚拟化; 当所述中断生成设备被虚拟化时,更新表示所述中断生成设备的数据结构以指示所 述中断生成设备正虚拟地在所述第二中断模式中操作、将所述配置消息或者配置信号转 变成第一中断模式配置消息并且向所述中断生成设备转发所述第一中断模式配置消息, 并且当所述中断生成设备未被虚拟化时,向所述中断生成设备转发所述配置消息或者配置信号。
9.根据权利要求6所述的虚拟中断模式接口,其中当所述消息和/或信号接收部件从 中断生成设备接收到第一中断模式中断消息时,所述消息和/或信号处理部件根据表示所述中断生成设备的数据结构确定所述中断生成设备是否被虚拟化并且正 虚拟地在所述第二中断模式中操作;当所述中断生成设备被虚拟化并且正虚拟地在所述第二中断模式中操作时,将所述 中断消息转变成第二中断模式中断消息或者信号并且向所述中断消息的预计接收方转发 所转变的中断消息或者信号;并且当所述中断生成设备未被虚拟化并且未虚拟地在所述第二中断模式中操作时,向所 述中断消息的预计接收方转发所述中断消息或者信号。
10.根据权利要求6所述的虚拟中断模式接口,其中当所述消息和/或信号接收部件 检测到实体针对被虚拟化并且虚拟地在所述第二中断模式中操作的中断生成设备尝试的 中断清除操作时,所述消息和/或信号处理部件向所述实体返回第二中断模式使模拟无效消息。
11.一种用于向操作系统或者BIOS虚拟化中断生成设备的方法,所述方法包括 当所述中断生成设备不支持第二中断模式并且已经接收到针对所述中断生成设备的用以将所述中断生成设备配置成在所述第二中断模式中操作的配置消息或者信号时, 将所述中断生成设备配置成在第一中断模式中操作并且虚拟地在所述第二中断模式中操 作;并且将从虚拟地在所述第二中断模式中操作的中断生成设备接收的第一中断模式中断消 息转变成第二中断模式中断并且向所接收的第一中断模式中断消息的预计接收方转发所 述第二中断模式中断。
12.根据权利要求11所述的方法,其中所述第二中断模式为PCI INTx中断模式;并且 其中所述第一中断模式为PCIe MSI或者MSI-X中断模式。
13.根据权利要求12所述的方法,被执行于以下各项之一内 在所述中断生成设备与PCIe交换机之间引入的设备;所述PCIe交换机; 主桥设备;以及在所述PCIe交换机与主桥设备之间引入的设备。
14.根据权利要求13所述的方法,其中所述方法执行于其中的所述PC Ie交换机、主桥设备或者分立设备通过PCIe互连 与所述中断生成设备互连;并且其中所述方法执行于其中的所述PCIe交换机、主桥设备或者分立设备与至少一个 CPU互连,响应于由所述中断生成设备生成的中断消息而在所述CPU上引发中断。
15.根据权利要求11所述的方法,还包括创建和维护用于每个中断生成设备的数据结 构,所述数据结构包括所述中断生成设备的中断模式和当前状态的指示。
16.根据权利要求15所述的方法,还包括初始化与每个中断生成设备对应的数据结构 以指示尚未配置所述中断生成设备。
17.根据权利要求15所述的方法,还包括当接收到来自中断生成设备的对访问一个或者多个兼容性寄存器的响应时, 确定所述响应是否指示所述中断生成设备仅能在所述第一中断模式中操作; 当所述响应指示所述中断生成设备仅能在所述第一中断模式中操作时,更改所述响 应以指示所述中断生成设备能够在所述第二中断模式和所述第一中断模式二者中操作、 更新表示所述中断生成设备的数据结构以指示所述中断生成设备被虚拟化并且向所述响 应的预计接收方转发所更改的响应;并且当所述响应指示所述中断生成设备能够在所述第二中断模式和所述第一中断模式 二者中操作时,或者当所述响应指示所述中断生成设备仅能在所述第二中断模式中操作 时,向所述兼容性响应的预计接收方转发所述响应。
18.根据权利要求15所述的方法,还包括当接收到针对中断生成设备的配置消息或者配置信号时,确定所述配置消息或者配置信号是否表示尝试将所述中断生成设备配置成在所述第 一中断模式中操作;当所述配置消息或者配置信号表示尝试将所述中断生成设备配置成在所述第一中断 模式中操作时,向所述中断生成设备转发所述配置消息或者配置信号;并且当所述配置消息或者配置信号表示尝试将所述中断生成设备配置成在所述第二中断 模式中操作时,根据表示所述中断生成设备的数据结构确定所述中断生成设备是否被虚拟化; 当所述中断生成设备被虚拟化时,更新表示所述中断生成设备的数据结构以指示所 述中断生成设备正虚拟地在所述第二中断模式中操作、将所述配置消息或者配置信号转 变成第一中断模式配置消息或者配置信号并且向所述中断生成设备转发所述第一中断模 式配置消息,并且当所述中断生成设备未被虚拟化时,向所述中断生成设备转发所述配置消息或者配置信号。
19.根据权利要求15所述的方法,还包括当接收到来自中断生成设备的第一中断模式中断消息时,根据表示所述中断生成设备的数据结构确定所述中断生成设备是否被虚拟化并且正 虚拟地在所述第二中断模式中操作;当所述中断生成设备被虚拟化并且正虚拟地在所述第二中断模式中操作时,将所述 中断消息转变成第二中断模式中断消息或者信号并且向所述中断消息的预计接收方转发 所转变的中断消息或者信号;并且当所述中断生成设备未被虚拟化并且未虚拟地在所述第二中断模式中操作时,向所 述中断消息的所述预计接收方转发所述中断消息或者信号。
20.根据权利要求16所述的方法,还包括当检测到实体针对被虚拟化并且虚拟地在所述第二中断模式中操作的中断生成设备 尝试的中断清除操作时,向所述实体返回第二中断模式使模拟无效消息。
全文摘要
本发明的实施例涉及用于表示包括I/O设备控制器的中断生成设备来虚拟化中断模式从而缺乏较旧中断模式的较新中断生成设备可以使用于继续依赖于较旧中断模式的系统中的方法。在本发明的一个实施例中,修改PCIe交换机或者基于PCIe的主桥,或者引入新部件以提供中断模式虚拟化功能或者虚拟中断模式接口,其表示中断生成设备(如I/O设备控制器向)向与I/O设备控制器通信的操作系统、BIOS层和其它部件提供虚拟中断模式。
文档编号G06F13/42GK102016812SQ200880128884
公开日2011年4月13日 申请日期2008年4月28日 优先权日2008年4月28日
发明者D·D·赖利, D·L·马修斯, H·E·布林克曼, P·V·布朗内尔 申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1