用于多线程处理器的高效中断路由的制作方法

文档序号:11450398阅读:217来源:国知局
用于多线程处理器的高效中断路由的制造方法与工艺



背景技术:

本发明一般地涉及用于多线程处理器的高效中断路由,更具体地说,涉及促进主机或启用的核心(core)处置处于等待中的线程的输入/输出(i/o)中断的经修改优先级路由。

一般而言,在过去数十年中处理器速度已提高,但是存储器访问速度尚无成比例的增加。继而,计算系统中处理器周期时间越快,当等待来自存储器的数据时延迟越明显。此类延迟的影响可通过计算系统的处理器内的多线程被缓和,所述多线程允许处理器的各个核心由被称为线程的多个指令流共享。举例而言,在由核心处理的第一线程的延时期间,第二线程能够利用该核心的资源。

然而,为了利用该延时,核心必须接收i/o中断。i/o中断的当前管理实践需要启用的主机(例如系统管理程序)接收优先级比核心的任何启用的客机更高的中断以用于处理。由此,该主机自身必须接着执行客机的中断的初始处理,且接着分派启用的线程(可能是一直在该核心上操作的同一线程)以完成该i/o中断处理。不利的是,在针对同一i/o中断启用当前客机线程中的一者时,通过主机进行的i/o中断的这些当前管理实践导致处理延时。



技术实现要素:

根据本发明的一个实施例,一种实现输入/输出(i/o)中断的经修改优先级路由的方法包括:由处理器判定所述i/o中断对于核心是否为待决的;根据所述i/o中断为待决的判定,由所述处理器判定是否针对所述中断的客机线程处理启用了所述核心的多个客机线程中的任一者;由所述处理器判定针对客机线程处理启用的所述多个客机线程中的至少一者是否处于等待状态;及根据针对客机线程处理启用的所述多个客机线程中的所述至少一者处于所述等待状态的判定,由所述处理器将所述i/o中断路由至针对客机线程处理启用且处于所述等待状态的客机线程。

经由本发明的技术实现额外特征及优点。本发明的其他实施例及方面在本文中经详细描述并且被视为所要求保护的发明的一部分。为更好地理解具有这些优点及特征的本发明,参考描述及附图。

附图说明

在本说明书的结尾部分处的权利要求书中特别指出并且清楚地要求保护被视为本发明的主题。本发明的前述内容及其他特征以及优势自结合附图进行的以下详细描述显而易见,其中:

图1示出多线程系统的计算设备示意图;

图2示出多线程系统的处理器示意图;及

图3至图6示出由多线程系统进行的处理流程。

具体实施方式

如上所指出,i/o中断的由多线程处理器的主机进行的管理导致处理延时。由此,需要输入/输出(i/o)中断的经修改优先级路由,所述中断促使主机或已启用的核心偏好当前处于等待状态的线程。

一般而言,本文揭示的本发明的实施例可包括利用多个核心中的至少一个核心来处理多个线程的多线程系统、方法和/或计算机程序产品。另外,在任何给定时间,在多个核心外发起的中断信号可被广播至多个核心。在广播中断信号后,在多个核心中的启用的核心之间发生串行化,所述串行化将所述中断信号提供至所述启用的核心中的仅一者。亦即,i/o中断为浮动中断(例如,一旦使得i/o中断在系统中为待决的,使其在系统中的所有物理核心上皆为待决的)。可接着针对这些中断启用或停用这些核心上的每个线程。举例而言,如下文进一步描述,启用或停用可基于客机程序状态字位6(psw.6)、客机控制寄存器6(cr6)、主机psw.6及区域屏蔽表(zmt)。在所述系统中启用的每个核心上的硬件独立调用i/o中断固件例程--向固件指示该中断为客机中断还是为主机中断。一旦经调用,此固件例程尝试将所述中断“移出队列”。响应于移出队列,系统硬件向一个核心(例如,请求移出队列的第一核心)指示所述系统硬件已成功将该中断移出队列,且从队列移除该i/o中断,使得该中断在系统中不再为待决的;如果系统中的任何其他核心尝试将同一i/o中断移出队列,则其被告知该移出队列未成功。核心上的已成功将中断移出队列的固件基于由硬件确定的优先级,将i/o中断呈现给系统管理程序(例如,主机)或客机软件。如果中断将被呈现给主机而客机处于活动中,则存在固件需要的处理以在硬件中存储客机状态及恢复主机状态。一旦系统管理程序已接收中断,则其亦具有待进行的额外工作以恢复客机状态及将该i/o中断呈现至合适的客机。

在操作中,举例而言,当i/o中断自信道子系统被呈现至系统时,对应于中断设备(例如,与中断相关联)的区域及中断子类别(isc)的位在每个核心的待决中断阵列(pia)中被设定。ism为位掩码,每isc一个ism,例如用于控制启用的cr6中的ism。pia项(通过区域编号索引)同样可被视为ism。在一个实施例中,存在8个isc且因此pia针对每个支持逻辑分区(lpar)或区域含有8个位。关于客机线程的唯一pia项是表示用于当前正在核心硬件上运行的区域的待决i/o中断的项。如果i/o中断对于当前区域及特定isc为待决的,则当1)客机psw.6中的i/o启用开启且2)对应于isc的位在客机cr6中以8位中断子类别屏蔽(ism)位开启时,i/o中断在客机中被启用。从运行客机时的主机角度看,待决i/o中断(如pia中所指示)能够应用于任何区域,包括当前区域。如果i/o中断对于特定区域内的特定isc为待决的,则在1)主机psw位6开启且2)特定区域及isc的启用在对应zmt中开启时,所述i/o中断在主机中被启用。在zmt中,每支持区域存在8个启用位,直接对应于pia中的位。对于当前区域为待决的任何i/o中断能够同时在客机及主机二者中被启用。

如果在pia中为待决的中断在一个或多个客机线程中或主机中或两者中被启用,则在核心硬件上调用i/o中断优先级处理。在前述实施方式中,如果在任何给定线程上针对特定i/o中断启用了客机及主机两者,则该i/o中断将被呈现至主机(例如,由于主机具有较高的优先级)。在本文所述的实施例中,针对此相同情况,i/o中断可转而被呈现至客机。另外,已添加优先级硬件,以基于如客机psw位14中所指示的客机等待状态,将任何特定i/o中断呈现至具有启用的客机线程中的给定优先级的核心上的仅一个物理线程。此优先级方案提供核心内的线程之间的优先级。另外,如果i/o中断为待决的且在此核心上的主机中被启用,且未针对该中断启用此核心上的客机线程或此中断并不适用于在此核心上运行的线程,则在呈现该主机中断(例如,在此核心上接受中断)之前添加延迟。这允许另一核心上的启用的客机线程(如果存在)首先采用i/o中断,从而间接提供系统中的核心之间的优先级。

现参考图1,展示包括计算设备112的多线程系统100的一个实例。多线程系统100仅为合适的计算节点的一个实例且并不意欲表示对本文所述的本发明的实施例的使用或可操作性的范围的任何限制(实际上可使用额外或替代的组件和/或实施方式)。亦即,多线程系统100及其中的组件可采用多个不同形式且包括多个和/或替代组件及设施。另外,如本文所描述,多线程系统100可包括和/或采用任何数目和组合的计算设备及利用各种通信技术的网络。无论如何,多线程系统100能够被实施和/或执行本文所阐述的任何可操作性。

在多线程系统100中,存在计算设备112,所述计算设备与大量其他通用或专用计算系统环境或配置一起操作。系统和/或计算设备(诸如多线程系统100和/或计算设备112)可采用多个计算机操作系统中的任一者,包括(但不限于)由纽约阿蒙克的国际商业机器公司发行的aixunix及z/os操作系统的版本和/或种类、微软windows操作系统、unix操作系统(例如,由加利福尼亚红木海岸的甲骨文公司发行的solaris操作系统)、linux操作系统、由加利福尼亚库珀蒂诺的apple公司发行的macosx及ios操作系统、由加拿大滑铁卢的动态研究公司发行的黑莓os及由开放手机联盟开发的android操作系统。可适用于与计算设备112一起使用的计算系统、环境和/或配置的实例包括(但不限于)个人计算机系统、服务器计算机系统、瘦客户端、复杂型客户端、手持设备或膝上计算机设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子设备、网络pc、小型计算机系统、计算机工作站、服务器、桌面计算机、笔记本电脑、网络设备、大型计算机系统,及包括以上系统或设备中任一者的分布式云端计算环境及其类似物。

可在由计算机系统执行的诸如程序模块的计算机系统可执行指令的总体上下文中描述计算设备112。通常,程序模块可包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算设备112可在分布式云端计算环境中实现,在所述环境中,任务由经由通信网路链接的远程处理设备执行。在分布式云端计算环境中,程序模块可位于包括存储设备的本地及远程计算机系统存储介质两者中。

如图1中所示,多线程系统100中的计算设备112以基于多线程系统100、其方法和/或其组件的操作及功能改进的通用计算设备的形式展示。计算设备112的组件可包括(但不限于)一个或多个处理器或处理单元(例如,包括支持多个线程115的至少一个核心114a的处理器114;例如多线程系统100包括包含两个或两个以上线程115的处理器114的核心114a)、存储器116、以及耦接包括处理器114及存储器116的各种系统组件的总线118。计算设备112通常亦包括多种计算机系统可读介质。此类介质可为可由计算设备112存取的任何可用介质,并且其包括易失性及非易失性介质、可移除式及不可移除式介质两者。

处理器114可接收来自存储器116的计算机可读程序指令且执行这些指令,由此执行由多线程系统100定义的一个或多个处理。处理器114可包括任何处理硬件、软件或由计算设备114利用的硬件及软件的组合,计算设备114通过执行算术、逻辑和/或输入/输出操作来执行计算机可读程序指令。处理器114及核心114a的组件的实例包括(但不限于):算术逻辑单元,其执行算术及逻辑运算;控制单元,其提取、解码及执行来自存储器的指令;以及阵列单元,其利用多个并行计算元件。

图2示出包括耦接至控制器215的处理器114的计算环境的一个实施例。在一个实例中,基于z/architecture的计算环境包括systemz服务器,所述服务器由纽约阿蒙克的国际商业机器公司提供。举例而言,处理器114可包括一个或多个分区(例如,逻辑分区lp1至逻辑分区lpn)、一个或多个物理核心(例如,核心1至核心m)及0级系统管理程序214(例如,逻辑分区管理器)。控制器215可包括负责在发布请求的不同处理器之间仲裁的集中式逻辑。举例而言,当控制器215接收存储器存取请求时,其判定是否允许存取该存储器位置,且如果允许,则将该存储器位置的内容提供至处理器114,同时维持该复合体内的处理器之间的存储器一致性。另一控制器215可经由图1中所示的i/o接口130管理至或自i/o适配器的请求及自网络适配器132的请求。

物理核心包括分配至逻辑分区的物理处理器资源。逻辑分区可包括一个或多个逻辑处理器,其中的每一者表示分配至该分区的所有或一部分物理处理器资源。物理核心可专用于特定分区的逻辑核心,使得基础核心的物理处理器资源被保留用于该分区;或与另一分区的逻辑核心共享,使得基础核心资源的物理处理器资源潜在地可用于另一分区。每个逻辑分区能够充当单独系统。亦即,每个逻辑分区可独立地被重设,初始被加载操作系统(例如,操作系统os1至操作系统osn)(如果需要),并且使用不同程序操作。在逻辑分区中运行的操作系统或应用程序似乎可存取整个完整的系统,但实际上,仅该整个系统的一部分可供使用。硬件及授权内部代码(亦被称作固件、微码或毫码)的组合阻止一个逻辑分区中的程序存取或干扰不同逻辑分区中的程序。这允许若干不同逻辑分区以时间分片方式在单个或多个物理核心上操作。在一个实施例中,每个物理核心包括一个或多个中央处理器(在本文中亦被称作“物理线程”)。在图2中所示的实例中,每个逻辑分区具有常驻操作系统,所述操作系统可针对一个或多个逻辑分区而不同。每个逻辑分区是操作系统能够在其中运行的虚拟机或客机配置的一个实例。

在图2中所示的实施例中,逻辑分区lp1至逻辑分区lpn由0级系统管理程序214管理,所述系统管理程序由在物理核心1至物理核心m上运行的固件实施。逻辑分区lp1至逻辑分区lpn及系统管理程序214各自包括驻留于与物理核心1至物理核心m相关联的中央存储装置(存储器)的相应部分中的一个或多个程序。系统管理程序214的一个实例为由纽约阿蒙克的国际商业机器公司提供的processorresource/systemsmanager(pr/smtm)。

再次参考图1,存储器116可包括有形设备,所述有形设备保留及存储计算机可读程序指令(如由多线程系统100提供)以由计算设备112的处理器114使用。存储器116可包括呈易失性存储器形式的计算机系统可读介质,诸如随机存取存储器120、高速缓存122和/或存储系统124。总线118表示若干类型的总线结构中的任一种中的一者或多者,包括存储器总线或存储器控制器、外围总线、加速图形端口及使用各种总线架构中的任一者的处理器或本地总线。通过实例且不加以限制,此类架构包括工业标准体系结构(isa)总线、微通道体系结构(mca)总线、增强型isa(eisa)总线、视频电子标准协会(vesa)本地总线及外围组件互连(pci)总线。

仅藉助于实例,可提供存储系统124以用于自不可移除式非易失性磁性介质(图中未展示且通常称为“硬盘驱动器”)读取且写入至所述磁性介质。虽然未展示,但是可提供用于自可移除式非易失性磁盘(例如,“软盘”)读取且写入至所述磁盘的磁盘驱动器,及用于自可移除式非易失性光盘(诸如cd-rom、dvd-rom或其他光学介质)读取或写入至所述光盘的光盘驱动器。在此类情况下,每个驱动器可由一个或多个数据介质接口连接至总线118。如下文将进一步描绘及描述,存储器116可包括具有被配置为执行本发明的实施例的操作的程序模块集合(例如,至少一个集合)的至少一个程序产品。存储系统124(和/或存储器116)可包括数据库、数据存储库或其他数据存储器且可包括用于存储、存取及取回各种类型的数据的各种类型的机构,包括分层数据库、文件系统中的文件集合、专有格式的应用数据库、关系数据库管理系统(rdbms)等。存储系统124大体上可包括在计算设备112内(如所示出,所述计算设备采用诸如上述操作系统中的一者的计算机操作系统)且以多种方式中的任何一种或多种方式经由网络进行存取。

通过实例且不加以限制,具有程序模块128的集合(至少一个集合)的程序/实用程序126以及操作系统、一个或多个应用程序、其他程序模块及程序数据可存储于存储器116中。操作系统、一个或多个应用程序、其他程序模块及程序数据中的每一者或其某一组合可包括网络连接环境的实施。

计算设备112亦可经由输入/输出(i/o)接口130和/或经由网络适配器132通信。i/o接口130和/或网络适配器132可包括由计算设备112用于在计算设备112内部和/或外部的组件之间通信的物理和/或虚拟机构。举例而言,i/o接口130可与以下各者通信:诸如键盘、指点设备、显示器140等的一个或多个外部设备140;使用户能够与计算设备112交互的一个或多个设备;和/或使计算设备112能够与一个或多个其他计算设备通信的任何设备(例如,网络卡、调制解调器等)。此外,计算设备112可经由网络适配器132与诸如局域网(lan)、一般广域网(wan)和/或公用网络(例如,因特网)的一个或多个网络通信。因此,i/o接口130和/或网络适配器132可被配置为在计算设备112内或为其接收或发送信号或数据。如所描绘,i/o接口130及网络适配器132经由总线118与计算设备112的其他组件通信。应理解,虽然未展示,但是其他硬件和/或软件组件可与计算设备112结合使用。实例包括(但不限于):微码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器、以及数据归档存储系统等。

虽然图1针对多线程系统100(及其他项目)示出单个项目,但这些表示并非意在限制及因此,任意项目可表示多个项目。举例而言,处理器114可包括多个处理核心,所述处理核心中的每一者执行多个线程且能够基于本文所述的经修改路由优先级接收i/o中断。

将参考图3描述通过多线程系统100的经修改优先级路由的一个实施例。图3示出处理流程300。处理流程300开始于起始块305处,在该块处需要维护且在pia中为待决的i/o中断在多个核心中的一个核心上被启用。经由客机psw.6及客机cr6中的ism针对核心的客机线程启用i/o中断。对于主机监视,包括当前在核心上未运行的区域的所有区域的i/o中断经由主机psw.6及zmt被启用。当前区域的任何待决i/o中断可同时在客机及主机两者中被启用。

在决策块320处,处理流程300作出关于是否针对待决i/o中断启用了客机控制及状态位的判定。例如,处理流程300判定是否在核心的任一客机线程的客机psw.6及cr6中启用了待决i/o中断。如果启用了任一客机线程,处理流程300进行至决策块325(例如,如通过“是”箭头所指示),在该决策块处作出关于在该核心上且针对中断所启用的多个客机线程中的任一者是否处于等待状态的判定。如果无客机线程处于等待状态且无客机线程针对所述i/o中断被启用,则处理流程300进行至块330(例如,如通过“否”箭头所指示),在该块处待决i/o中断被路由至这样的客机线程:针对该客机线程启用了该待决i/o中断。如果多个客机线程中的至少一者处于等待状态且针对待决i/o中断被启用,则处理流程进行至块335(例如,如通过“是”箭头所指示),在该块处该待决i/o中断被路由至针对该中断启用的处于等待状态的客机线程。以此方式,处理流程300实现促进通过处于等待中的客机线程进行的处理的i/o中断的经修改优先级路由。具体地说,i/o中断路由优先级被改为:如果存在一个或多个处于等待状态的被启用的线程,该中断被提供至这些线程中的一者;如果不存在针对待决中断启用的处于等待状态的线程,该i/o中断被提供至针对其启用的线程。另外,处于等待状态的多个线程(335)或并非处于等待状态的多个线程(330)的路由的确定,多线程系统100可利用随机或其他方式的路由算法进行选择。

作为另一示出的实例,图4展示路由i/o中断的粒状(granular)处理流程400。亦即,在多线程系统100的硬件发现在pia405中的待决i/o中断是针对活动区域并且客机psw.6及客机cr6被启用后,则i/o中断在客机中被启用,如块430中所示。此客机启用独立地适用于核心上的每个线程。当pia405针对任何区域具有待决的i/o中断时,如果主机psw.6及zmt410中对应位被开启,则如块450中所示,中断通过主机监视被启用(除了zmt检查不适用于区域0外)。如果特定中断在此核心上的客机线程中及主机中均被启用,则该中断将被提供至客机。

将参考图5描述使得经修改优先级路由可通过多线程系统100利用的延迟的一个实施例。图5示出处理流程500。处理流程500开始于起始块505处,在该块处需要维护且在pia中为待决的i/o中断在多个核心中的一个核心上被启用。经由客机psw.6及客机cr6中的ism针对核心的客机线程启用i/o中断。对于主机监视,包括当前在核心上未运行的区域的所有区域的i/o中断经由主机psw.6及zmt被启用(除了zmt检查不适用于区域0外)。当前区域的任何待决i/o中断可同时在客机及主机两者中被启用。

在决策块520处,处理流程500作出关于是否针对待决i/o中断启用了客机控制及状态位的判定。例如,处理流程500判定是否在核心的任一客机线程的客机psw.6及cr6中启用了待决i/o中断。如果启用了任一客机线程,处理流程500进行至块530(例如,如通过“是”箭头所指示),在该块处待决i/o中断被路由至这样的客机线程:针对该客机线程启用了待决i/o中断。如果处理流程500判定待决i/o中断未在核心的多个线程中的任一者上启用其对应客机psw.6及cr6,则处理流程500进行至块540(例如,如通过“否”箭头所指示)。在块540处,处理流程500已识别到针对待决i/o中断仅启用了主机监视且(例如)在此核心上接受该中断之前开始延迟(如果该延迟并非已在进行中)。延迟可通过多线程系统、方法和/或计算机程序产品被硬编码或编程。在块545处,处理流程500检查延迟是否已完成。

如果延迟未完成(例如,如通过“否”箭头所指示),则在决策块555处(当在此核心上接受该中断之前延迟时)处理流程500作出关于是否仍存在待决i/o中断的判定。如果不存在i/o中断(例如,如果另一核心已接受该中断),处理流程进行至块560且结束硬件i/o中断优先级处理(例如,如通过“否”箭头所指示)。另外,在决策块555处,如果i/o中断仍为待决的,则处理流程500返回(例如,如通过“是”箭头所指示)至块520,在该块处在再次检查该延迟之前针对客机线程i/o中断启用检查多个线程。继而,该延迟允许核心上的线程中的一者,或另一核心上的一个线程启用并且采用客机中的待决i/o中断。

一般而言,由于处理流程500在呈现主机i/o中断前延迟的同时循环执行其反复作业,所期望的结果将最终是在pia中没有待决i/o中断,因为原始主机中断已由此核心或另一核心视为客机中断。如果如块545所判定,延迟已完成,则处理流程500进行至块550,在该块处待决i/o中断被路由至主机以用于主机处理(例如,如通过“是”箭头所指示)。因此,仅当i/o中断在延迟结束时仍为待决时,i/o中断才被提供至主机。另外,在一个实施例中,将在延迟结束时采用所有启用的待决i/o中断,且在所有启用的i/o中断已被处理之前,延迟不会重新开始。

将参考图6描述通过多线程系统100的经修改优先级路由的一个实施例。图6示出处理流程600。处理流程600开始于起始块605处,在该块处需要维护且在pia中为待决的i/o中断在多个核心中的一个核心上被启用。经由客机psw.6及客机cr6中的ism针对核心的客机线程启用i/o中断。对于主机监视,包括当前在核心上未运行的区域的所有区域的i/o中断经由主机psw.6及zmt被启用。当前区域的任何待决i/o中断可同时在客机及主机两者中被启用。

在决策块620处,处理流程600作出关于是否针对待决i/o中断启用了客机控制及状态位的判定。例如,处理流程600判定是否在核心的任一客机线程的客机psw.6及cr6中启用了待决i/o中断。如果启用了任一客机线程,处理流程600进行至决策块625(例如,如通过“是”箭头所指示),在该决策块处作出关于正在该核心上执行且针对中断所启用的多个客机线程中的任一者是否处于等待状态的判定。如果无客机线程处于等待状态且无客机线程针对该i/o中断被启用,则处理流程600进行至块630(例如,如通过“否”箭头所指示),在该块处待决i/o中断被路由至这样的客机线程:针对该客机线程启用了待决i/o中断。如果多个客机线程中的至少一者处于等待状态且针对待决i/o中断被启用,则处理流程进行至块635(例如,如通过“是”箭头所指示),在该块处该待决i/o中断被路由至针对该中断被启用的、多个客机线程的处于等待状态的一个线程。当确定处于等待状态的多个启用的线程(635)或并非处于等待状态的多个启用的线程(630)的路由时,多线程系统100可利用随机或其他方式的路由算法进行选择。

返回至决策块620,如果处理流程600判定待决i/o中断未针对核心的多个线程中的任一者启用其对应客机psw.6及cr6,则处理流程600进行至块640(例如,如通过“否”箭头所指示)。在块640处,处理流程600已识别到针对待决i/o中断仅启用了主机监视且在接受将待决i/o中断呈现至主机前开始延迟(如果该延迟并非已在进行中)。延迟可通过多线程系统、方法和/或计算机程序产品被硬编码或编程。在块645处,处理流程600检查延迟是否已完成。

如果延迟未完成(例如,如通过“否”箭头所指示),则在决策块655处(当在此核心上接受该中断前延迟时)处理流程600作出关于是否存在待决i/o中断的判定。如果不存在i/o中断,将进行至块660且结束硬件i/o中断优先级处理(例如,如通过“否”箭头所指示)。另外,在决策块655处,如果i/o中断仍为待决的,则处理流程600返回(如通过“是”箭头所指示)至块620,在该块处在再次检查该延迟之前针对客机线程i/o中断启用检查多个线程。继而,该延迟允许核心上的线程中的一者,或另一核心上的一个线程启用并且采用客机中的待决i/o中断。

一般而言,由于处理流程600在接受主机i/o中断前延迟的同时循环执行其反复作业,所期望的结果将最终是在pia中没有待决i/o中断,因为原始主机中断已由此核心或另一核心视为客机中断。如果如块645所判定,延迟已完成,则处理流程600进行至块650,在该块处待决i/o中断被路由至主机以用于主机处理(例如,如通过“是”箭头所指示)。因此,仅当i/o中断在延迟结束时仍为待决时,i/o中断才被提供至主机。另外,在一个实施例中,将在延迟结束时采用所有启用的待决i/o中断,且在所有启用的i/o中断已处理之前,延迟不会重新开始。

因此,鉴于以上情形,多线程系统100将i/o中断呈现至处于启用等待状态的客机线程(该线程处于处置中断的最佳状态(例如,因为该线程此时并未进行有价值的工作)),或如果失败,则呈现至并非处于等待状态的启用的客机线程。另外,通过延迟在此核心上的仅由主机的zmt启用的i/o中断,多线程系统100允许某一客机线程用于启用及采用该中断的时间。继而,核心不需要离开仿真模式(例如,打断核心上的所有活动线程)及没有必要进行主机处理以找到针对i/o中断启用的核心。此外,核心不会脱离仿真模式,使得相同配置的客机启用线程在核心上能够被重新分派以处置i/o中断。

在执行经修改优先级的操作和/或方法的多线程系统100的另一实例中,当具有多个活动客机线程的逻辑核心在物理核心上被分派时,一个或多个线程可处于启用的等待状态,而一个或多个其他线程主动在核心上操作。活动线程可经由其psw.6及cr6针对i/o中断被启用或针对i/o中断被停用。另外,主机可经由用于此区域或某一其他区域的区域屏蔽表针对i/o中断进行监视。因此,如果针对需要维护的i/o中断仅启用一个线程,则该i/o中断被路由至该线程。如果存在针对需要维护的i/o中断启用的多个线程,且这些线程的至少一者处于等待状态,则多线程系统100的中断逻辑使i/o中断偏移至处于启用的等待状态的线程中的一者。通过使i/o中断的授予偏移至当前处于启用的等待状态的线程,i/o中断更快地在这样的线程上被处置:该线程未运行任何有用内容且倾向于避免中断当前处于活动状态的线程上的应用的执行。

在执行经修改优先级的操作和/或方法的多线程系统100的另一实例中,如果针对需要维护的i/o中断启用多个客机线程,且无一者处于启用的等待状态,则多线程系统100的路由逻辑可随机或经由内部算法(例如,诸如循环配置资源),基于该线程的启用选择接收i/o中断的线程。基于其他isc位可针对不同中断启用的所有其他线程被拖延,直至第一线程完成其对中断的接受。一旦第一线程完成接受,则后续待决i/o中断由仍针对需要维护的任何其余i/o中断启用的任何线程处理。如上所指示,i/o中断的路由可被偏移至现在处于等待状态的线程(如果存在这样的线程)。

在执行经修改优先级的操作和/或方法的多线程系统100的另一实例中,如果在核心上不存在针对需要维护的i/o中断所启用的线程,而主机正在核心上经由zmt监视在pia中现在为待决的中断,则主机不会立即被授予用于处理的中断。实际上,在核心上的中断处理的授予中将存在延迟,其中该中断在pia中保持为待决的且并非立即被授予至主机以进行处理。该延迟允许此核心上的线程或某一其他核心上的线程针对i/o中断启用,且接着处理该中断。亦即,仅在延迟已完成后且i/o中断仍需要维护时,i/o中断才被导向主机以进行处理。

在执行经修改优先级的操作和/或方法的多线程系统100的另一实例中,如果在核心上不存在处于等待状态且针对需要维护的i/o中断启用的线程,而存在并非处于等待状态且针对该中断启用的至少一个客机线程,则启用的非等待中线程不会立即被授予用于处理的中断。实际上,在核心上的中断处理的授予中将存在延迟,其中该中断在pia中保持为待决的且并非立即被授予至客机以进行处理。该延迟允许此核心上的线程或某一其他核心上的线程进入针对i/o中断启用的等待状态,且接着处理该中断。亦即,仅在延迟已完成后且i/o中断仍需要维护时,i/o中断才被导向主机以进行处理。在一个实施例中,此延迟短于上述用于将该中断导向至主机的延迟。以此方式,引入三级偏移,首先有利于处于等待状态的客机线程,接着是并非处于等待状态的客机线程,及最后主机作为最不优选的选项。

一般而言,计算设备可包括处理器(例如,图1的处理器114)及计算机可读存储介质(例如,图1的存储器116),其中处理器接收计算机可读程序指令(例如,来自计算机可读存储介质)且执行这些指令,藉此执行一个或多个处理,包括本文所述的处理中的一者或多者。

可自使用以一种或多种编程语言的任何组合编写的编译器指令、指令集架构(isa)指令、机器指令、机器相关指令、微码、固件指令、状态设定数据或源代码或目标程序代码产生的计算机程序编译或解译计算机可读程序指令,所述一种或多种编程语言包括诸如smalltalk、c++或其类似者的面向对象式编程语言,及常规过程式编程语言,诸如“c”编程语言或类似编程语言。计算机可读程序指令可完全在计算设备上执行,部分在计算设备上执行,作为独立软件包执行,部分在本地计算设备上执行且部分在远程计算机设备上执行,或完全在远程计算机设备上执行。在后一情形中,远程计算机可经由任一类型的网络(包括局域网(lan)或广域网(wan))连接至本地计算机,或可(例如,经由使用因特网服务提供商的因特网)连接至外部计算机。在一些实施例中,电子电路(包括(例如)可编程逻辑电路、场可编程门阵列(fpga)或可编程逻辑阵列(pla))可通过利用计算机可读程序指令的状态信息将电子电路个性化来执行计算机可读程序指令,以便执行本发明的方面。本文所述的计算机可读程序指令亦可经由网络自计算机可读存储介质下载至相应计算/处理设备或下载至外部计算机或外部存储设备(例如,支持通信的计算设备及连接的任意组合)。举例而言,网络可为因特网、局域网、广域网和/或无线网络,包括铜传输线缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器,且利用多种通信技术,诸如无线电技术、蜂窝技术等。

计算机可读存储介质可为保持及存储由指令执行设备(例如,如上文所描述的计算设备)使用的指令的有形设备。计算机可读存储介质可为(例如,但不限于)电子存储设备、磁性存储设备、光学存储设备、电磁存储设备、半导体存储设备或前述各者的任何合适组合。计算机可读存储介质的更特定实例的非穷尽性列表包括以下项:便携计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携光盘只读存储器(cd-rom)、数字化通用光盘(dvd)、记忆棒、软盘、机械编码的设备(诸如其上记录有指令的打孔卡片或凹槽中的凸起结构)及前述各项的任何合适组合。如本文中所使用,不将计算机可读存储介质本身理解为暂时性信号,诸如无线电波或其他自由传播的电磁波、经由波导或其他传输介质传播的电磁波(例如,经由光缆传递的光脉冲),或经由导线传输的电信号。

因此,所述多线程系统和方法和/或其组件可作为一个或多个计算设备上的计算机可读程序指令实施,这些指令存储在与之相关联的计算机可读存储介质上。计算机程序产品可包括存储在计算机可读存储介质上的此类计算机可读程序指令以用于执行和/或使处理器执行多线程系统和方法的操作。多线程系统和方法和/或其组件(如所实施和/或所要求保护的)改进计算机和/或处理器自身的功能,因为经修改优先级路由促进通过处于等待状态的线程进行的处理,这改进了处理资源效率及速度。即,如果i/o中断在此核心上仅以主机级别被启用,则硬件延迟i/o中断固件的调用以希望在另一处理器或此处理器上的另一客机启用的线程将首先采用该中断。这消除用于在主机启用的线程上移出队列的开销,但更重要的是在处置该中断时为客机线程提供优先级,客机线程处置该中断的开销大大减少。继而,当没有运行启用的客机时,仅中断主机以处理任何给定i/o中断。另外,如果任何给定核心在客机及主机级别处被启用,则硬件将向毫码指示该中断为客机中断。在引入多线程的情况下,硬件亦具有在任何给定核心上的两个线程在客机级别处针对中断被启用时,将中断呈现至当前以等待状态运行的线程而非呈现至当前未以等待状态运行的线程的能力。

本文参考根据本发明的实施例的方法、装置(系统)及计算机程序产品的流程图和/或方块图描述本发明的多个方面。应理解,可通过计算机可读程序指令实现流程图和/或方块图的每个块,及流程图和/或方块图中的块的组合。

可将这些计算机可读程序指令提供至通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以使得经由所述计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现一个或多个流程图和/或方块图块中所指定的操作/动作的构件。亦可将这些计算机可读程序指令存储于计算机可读存储介质中,这些指令可引导计算机、可编程数据处理装置和/或其他设备以特定方式操作,使得存储有指令的计算机可读存储介质包括制品,所述制品包括实现一个或多个流程图和/或方块图块中指定的操作/动作的多个方面的指令。

计算机可读程序指令亦可加载至计算机、其他可编程数据处理装置或其他设备上,以使一系列操作步骤在所述计算机、其他可编程装置或其他设备上执行以产生计算机实现的处理,使得在所述计算机、其他可编程装置或其他设备上执行的指令实现一个或多个流程图和/或方块图块中所指定的操作/动作。

附图中的流程图及方块图示出根据本发明的各种实施例的系统、方法及计算机程序产品的可能实施方式的架构、可操作性及操作。就此而言,流程图或方块图中的每个块可表示指令的模块、区段或部分,其包括用于实现指定逻辑运算的一个或多个可执行指令。在一些备选实施方式中,块中提及的操作可不按附图中所提及的次序发生。举例而言,视所涉及的可操作性而定,以连续方式展示的两个块实际上可基本上同时执行,或这些块有时可以以相反次序执行。亦应注意,可通过执行指定操作或动作或执行专用硬件及计算机指令的组合的基于硬件的专用系统实现方块图和/或流程图的每个块,及方块图和/或流程图中的块的组合。

已出于例示目的呈现本发明的各实施例的描述,但这些描述并不意欲为穷举的或限于所披露的实施例。在不背离所描述实施例的范围及精神的情况下,对于本领域技术人员而言,许多修改及变化将显而易见。本文中所使用术语经选择以最佳地解释实施例的原理、实际应用或相较于市场中发现的技术的技术改进,或使得本领域技术人员能够理解本文所披露的实施例。

本文中所使用的术语仅出于描述特定实施例的目的,且并不意欲限制本发明。如本文中所使用,除非上下文另外清楚地指示,否则单数形式“一”及“该”意欲同样包括复数形式。将进一步理解,当在本说明书中使用时,术语“包括”指定所陈述特征、整体、步骤、操作、元素和/或组件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元素和/或其组合的存在或添加。

本文描绘的流程图仅为一实例。在不背离本发明的范围的情况下,可存在本文描述的图或步骤(或操作)的多个变体。举例来说,可以不同次序执行所述步骤或可添加、删除或修改步骤。所有这些变体被视为所要求保护的发明的一部分。

虽然已描述本发明的优选实施例,但将理解,本领域技术人员现在及将来可进行属于随后的权利要求书范围内的各种改进及增强。这些权利要求应被视为维护对最初描述的本发明的恰当保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1