首页> 中国专利> 虚拟中断模式接口和用于虚拟化中断模式的方法

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

摘要

本发明的实施例涉及用于表示包括I/O设备控制器的中断生成设备来虚拟化中断模式从而缺乏较旧中断模式的较新中断生成设备可以使用于继续依赖于较旧中断模式的系统中的方法。在本发明的一个实施例中,修改PCIe交换机或者基于PCIe的主桥,或者引入新部件以提供中断模式虚拟化功能或者虚拟中断模式接口,其表示中断生成设备(如I/O设备控制器向)向与I/O设备控制器通信的操作系统、BIOS层和其它部件提供虚拟中断模式。

著录项

  • 公开/公告号CN102016812A

    专利类型发明专利

  • 公开/公告日2011-04-13

    原文格式PDF

  • 申请/专利权人 惠普开发有限公司;

    申请/专利号CN200880128884.1

  • 申请日2008-04-28

  • 分类号G06F13/24(20060101);G06F13/38(20060101);G06F13/42(20060101);

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人李娜;王洪斌

  • 地址 美国德克萨斯州

  • 入库时间 2023-12-18 02:05:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-02-15

    专利权的转移 IPC(主分类):G06F13/24 登记生效日:20170120 变更前: 变更后: 申请日:20080428

    专利申请权、专利权的转移

  • 2014-06-11

    授权

    授权

  • 2011-06-08

    实质审查的生效 IPC(主分类):G06F13/24 申请日:20080428

    实质审查的生效

  • 2011-04-13

    公开

    公开

说明书

技术领域

本发明涉及中断和在系统的部件之间的中断模式兼容性并且特别地涉及一种用于代表中断生成设备来虚拟化中断模式从而中断生成设备可以与其它系统部件恰当地互操作的方法。

背景技术

在前几代计算机硬件和计算机系统中,多种不同类型的并行总线用于将部件互连(比如通过主桥将外围I/O设备互连到处理器和存储器总线)。起初,包括并行信号线以实现同时传送字节、16位的字、32位的字或者64位的字的总线提供比串行通信介质(其中位值被接连地连续传送并且由接收端口合并成字节、16位的字、32位的字或者64位的字)更高的数据传送带宽。然而,在时钟速率高时,在总线中的并行信号线之间的信号偏斜可能变成越来越难解决的问题,并且随着在微处理器和其它集成电路内的特征密度的减少,将集成电路部件与并行总线连接所需要的大量管脚表示着相对于处理能力而言越来越高的成本和空间约束。因而,与较旧的并行总线相比,串行通信介质现在可以提供更大的数据传送带宽、更易于并入系统中、对集成电路设计和封装施加更少约束并且还更为经济。较旧的基于总线的通信介质(包括外围部件互连(“PCI”)和高级技术附件(“ATA”))正在被更快、更经济的串行通信介质如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共同组成主桥138

PCI总线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更新成PCIe。然而,操作系统和上游部件可以保持不变,因为针对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接口提供为交换机内的单独层或者部件。

前文描述出于说明的目的而使用具体术语以提供对本发明的透彻理解。然而本领域技术人员将清楚实现本发明无需具体细节。出于图示和描述的目的而提供对本发明具体实施例的前文描述。它们并非打算穷举本发明或者使本发明限于公开的精确形式。鉴于上述教导许多修改和变化是可能的。实施例被示出和描述以便最佳说明本发明的原理及其实际应用,由此使本领域技术人员能够以与设想的具体用途相适应的各种修改最好地利用本发明和各种实施例。本发明的范围意欲由所附权利要求及其等效物限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号