CN114003363A - 线程间中断信号发送方法及装置 - Google Patents
线程间中断信号发送方法及装置 Download PDFInfo
- Publication number
- CN114003363A CN114003363A CN202111282442.6A CN202111282442A CN114003363A CN 114003363 A CN114003363 A CN 114003363A CN 202111282442 A CN202111282442 A CN 202111282442A CN 114003363 A CN114003363 A CN 114003363A
- Authority
- CN
- China
- Prior art keywords
- thread
- interrupt signal
- interrupt
- processor
- configuration information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000011664 signaling Effects 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims abstract description 17
- 238000004590 computer program Methods 0.000 claims description 17
- 230000007246 mechanism Effects 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 10
- 230000008054 signal transmission Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 101100016034 Nicotiana tabacum APIC gene Proteins 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
Abstract
本说明书的实施例提供线程间中断信号发送方法及装置。在该线程间中断信号发送方法中,第一线程所在处理器通过MMIO写操作来经由PCI总线向PCI设备发送通知消息。MMIO写操作基于PCI设备的MMIO内存的内存地址所映射的第一线程的虚拟空间地址实现。响应于接收到通知消息,PCI设备生成旨在第二线程的中断信号,并且按照PCI设备的中断配置信息所配置的中断信号发送方式向第二线程所在处理器发送中断信号。PCI设备的中断配置信息预先根据第二线程的状态信息配置,第二线程的状态信息包括第二线程所处运行态以及第二线程是否处于运行中。
Description
技术领域
本说明书实施例通常涉及计算机技术领域,尤其涉及线程间中断信号发送方法及装置。
背景技术
多核多线程处理器的中断可以由可编程中断控制器(Programmable InterruptController,PIC)统一控制。PIC允许一个硬件线程中断其他硬件线程,这种方式被称为核间中断(Inter-Processor Interrupts,IPI)。PIC具有宽度为32位的核间中断寄存器IPIBase,该寄存器存储目的线程的编号、中断向量及中断类型(是否中断多个硬件线程)等内容。核间中断可以通过向核间中断寄存器IPIBase写入需要的值来产生。若硬件线程A想要发送核间中断给硬件线程B,它只需向核间中断寄存器IPIBase中写入硬件线程B的线程ID、中断向量、中断类型等值。PIC会通知硬件线程B所在的内核挂起它当前的执行序列,并根据中断向量跳转到中断服务例程ISR的入口。
在Host Kernel下,CPU可以利用IPI来实现硬件线程之间的中断信号发送,但是在一些应用场景下,不能利用IPI来实现硬件线程之间的中断信号发送。
发明内容
鉴于上述,本说明书实施例提供一种线程间中断信号发送方法及装置。利用该线程间中断信号发送方法及装置,可以实现所有运行态的线程间的中断信号发送。
根据本说明书实施例的一个方面,提供一种用于在第一线程和第二线程之间发送中断信号的方法,所述方法由PCI设备执行,所述方法包括:经由PCI总线接收第一线程所在处理器通过MMIO写操作发送的通知消息,所述MMIO写操作基于所述PCI设备的MMIO内存的内存地址所映射的所述第一线程的虚拟空间地址实现;响应于接收到所述通知消息,生成旨在第二线程的中断信号;以及按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号,其中,所述中断配置信息根据所述第二线程的状态信息配置,所述第二线程的状态信息包括所述第二线程所处运行态以及所述第二线程是否处于运行中。
可选地,在上述方面的一个示例中,所述中断配置信息根据所述第二线程的状态信息配置可以包括:如果所述第二线程处于Host Kernel,则将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器中的为所述第二线程配置的中断句柄;如果所述第二线程处于Guest Kernel且所述第二线程在运行中,则将中断配置为PostedInterrupt,并且将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器;如果所述第二线程处于Guest Kernel且所述第二线程未运行,则将所述中断信号发送方式配置为将所述中断信号发送给Host Kernel中的与所述第二线程所在虚拟处理器对应的物理处理器,所述物理处理器唤醒所述第二线程所在虚拟处理器;如果所述第二线程处于用户态,则将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器。
可选地,在上述方面的一个示例中,如果所述第二线程处于用户态,则将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器可以包括:如果所述第二线程处于用户态,则将所述中断信号发送方式配置为通过信号量发送方式或eventfd发送方式将所述中断信号发送给所述第二线程所在处理器。
可选地,在上述方面的一个示例中,所述通知消息包括mov指令,所述mov指令的源操作数存储所述PCI设备的MMIO内存所需值,以及所述mov指令的目的地址是所述MMIO内存所映射到的所述第一线程的虚拟空间地址。
可选地,在上述方面的一个示例中,所述MMIO内存所需值包括多个取值中的一个取值,每个取值对应一种类型的中断信号。相应地,响应于接收到所述通知消息,生成中断信号可以包括:响应于接收到所述mov指令,根据所述mov指令中的MMIO内存所需值,生成与所需值对应的中断信号。
可选地,在上述方面的一个示例中,所述MMIO内存包括doorbell内存。
可选地,在上述方面的一个示例中,所述PCI设备具有限流策略,所述方法还可以包括:在生成所述中断信号后,根据所述限流策略进行限流判断。在所述限流判断结果为进行限流时,不发送所述中断信号,在所述限流判断结果为不进行限流时,按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号。
可选地,在上述方面的一个示例中,所述PCI设备具有分发策略。按照所述PCI设备的设备中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号可以包括:根据所述PCI设备中的分发策略,按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号。
可选地,在上述方面的一个示例中,所述PCI设备具有中断重映射表。所述方法还可以包括:基于所述中断重映射表来对所述中断信号进行中断重映射。相应地,按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号可以包括:按照所述PCI设备的中断配置信息所配置的中断信号发送方式,向所述第二线程所在处理器发送经过中断重映射后的中断信号。
根据本说明书的实施例的另一方面,提供一种用于在第一线程和第二线程之间发送中断信号的装置,所述装置应用于PCI设备执行,所述方法包括:通知接收单元,经由PCI总线接收第一线程所在处理器通过MMIO写操作发送的通知消息,所述MMIO写操作基于所述PCI设备的MMIO内存的内存地址所映射的所述第一线程的虚拟空间地址;中断信号生成单元,响应于接收到所述通知消息,生成旨在第二线程的中断信号;中断配置信息配置单元,根据第二线程的状态信息配置所述PCI设备的中断配置信息,所述第二线程的状态信息包括所述第二线程所处运行态以及所述第二线程是否处于运行中;以及中断信号发送单元,按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号。
可选地,在上述方面的一个示例中,如果所述第二线程处于Host Kernel,则所述中断配置信息配置单元将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器中的为所述第二线程配置的中断句柄;如果所述第二线程处于GuestKernel且所述第二线程在运行中,则所述中断配置信息配置单元将中断配置为PostedInterrupt,并且将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器;如果所述第二线程处于Guest Kernel且所述第二线程未运行,则所述中断配置信息配置单元将所述中断信号发送方式配置为将所述中断信号发送给Host Kernel中的与所述第二线程所在虚拟处理器对应的物理处理器,所述物理处理器唤醒所述第二线程所在虚拟处理器;如果所述第二线程处于用户态,则所述中断配置信息配置单元将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器。
可选地,在上述方面的一个示例中,如果所述第二线程处于用户态,则所述中断配置信息配置单元将所述中断信号发送方式配置为通过信号量发送方式或eventfd发送方式将所述中断信号发送给所述第二线程所在处理器。
可选地,在上述方面的一个示例中,所述通知消息包括mov指令,所述mov指令的源操作数存储所述PCI设备的MMIO内存所需值,以及所述mov指令的目的地址是所述MMIO内存所映射到的所述第一线程的虚拟空间地址。
可选地,在上述方面的一个示例中,所述MMIO内存所需值包括多个取值中的一个取值,每个取值对应一种类型的中断信号。相应地,响应于接收到所述mov指令,所述中断信号生成单元根据所述mov指令中的MMIO内存所需值,生成与所需值对应的中断信号。
可选地,在上述方面的一个示例中,所述PCI设备具有限流策略。所述装置还可以包括:限流判断单元,在生成所述中断信号后,根据所述限流策略进行限流判断。在所述限流判断单元判断为进行限流时,所述中断信号发送单元不发送所述中断信号,在所述限流判断单元判断为不进行限流时,所述中断信号发送单元按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号。
可选地,在上述方面的一个示例中,所述PCI设备具有分发策略。所述中断信号发送单元根据所述分发策略,按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号。
可选地,在上述方面的一个示例中,所述PCI设备具有中断重映射表。所述装置还可以包括:中断重映射单元,基于所述中断重映射表来对所述中断信号进行中断重映射。所述中断信号发送单元按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送经过中断重映射后的中断信号。
根据本说明书的实施例的另一方面,提供一种用于在第一线程和第二线程之间发送中断信号的装置,所述装置包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上所述的用于在第一线程和第二线程之间发送中断信号的方法。
根据本说明书的实施例的另一方面,提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行来实现如上所述的用于在第一线程和第二线程之间发送中断信号的方法。
根据本说明书的实施例的另一方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如上所述的用于在第一线程和第二线程之间发送中断信号的方法。
附图说明
通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了根据本说明书的实施例的核间通知系统的系统架构的示例框图。
图2示出了根据本说明书的实施例的中断信号发送方Sender和中断信号接收方Receiver的部署示意图。
图3示出了根据本说明书的实施例的中断信号发送方Sender的初始化过程的示例示意图。
图4示出了根据本说明书的实施例的中断配置信息配置过程的示例流程图。
图5示出了根据本说明书的实施例的用于在第一线程和第二线程之间发送中断信号的方法的流程图。
图6示出了根据本说明书的实施例的用于在第一线程和第二线程之间发送中断信号的装置的方框图。
图7示出了根据本说明书的实施例的基于计算机实现的中断信号发送装置的示意图。
具体实施方式
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
在Host Kernel下,CPU可以利用IPI来实现硬件线程之间的中断信号发送,但是在一些应用场景下,由于权限原因,无法使用IPI机制来实现线程所在的CPU之间的中断信号通知。上述应用场景的示例例如可以包括vCPU同步操作、Para-virtualized(PV)driver和两级调度器。
在vCPU同步操作的应用场景下,作为中断信号发送方的线程Sender处于GuestKernel,以及作为中断信号接收方的线程Receiver处于Guest Kernel。在硬件虚拟化背景下,Guest Kernel中的很多操作需要vCPU同步操作,比如:TLB shootdown、RCU、、CPUfrequency scaling、Schedule。
在PV driver的应用场景下,作为中断信号发送方的线程Sender处于GuestKernel,以及作为中断信号接收方的线程Receiver处于Host Kernel。PV driver分为前端driver和后端driver,当前端driver完成请求填写后,需要激活或唤醒(kick)后端driver进行工作。
在两级调度器的应用场景下,作为中断信号发送方的线程Sender处于GuestKernel或Host Kernel,以及作为中断信号接收方的线程Receiver处于Host Kernel。在两级调度器系统中,除了Host Kernel中的L1调度器(比如Linux CFS)之外,在Guest Kernel或者HR3中存在另外一个调度器(L2调度器),L2调度器用于调度Guest Kernel或者HR3中的任务。无论采用Work-Stealing还是Work-Sharing模型,在任务繁忙时,需要唤醒新的vCPU或线程进行工作。
下面将参照附图来详细描述根据本说明书的实施例的用于在第一线程和第二线程之间发送中断信号的方法及装置。
图1示出了根据本说明书的实施例的核间通知系统1的系统架构的示例框图。
如图1所示,核间通知系统1包括中断信号发送方Sender 10、PCI设备20和中断信号接收方Receiver 30。Sender 10可以是运行在用户态的HR3线程,由处于Host Kernel的物理处理器(例如,pCPU0)运行的HR0线程,或者由处于Guest Kernel的虚拟处理器(例如,vCPU0)运行的Guest线程。Receiver 30可以是运行在用户态的HR3线程,由处于HostKernel的物理处理器(例如,pCPU1)运行的HR0线程,或者由处于Guest Kernel的虚拟处理器(例如,vCPU1)运行的Guest线程。图2示出了根据本说明书的实施例的中断信号发送方Sender和中断信号接收方Receiver的部署示意图。在本说明书中,Sender 10以及Receiver30分别对应于第一线程和第二线程。
PCI设备20例如可以通过向通用PCI设备加入定制的通知分发(notificationdistribution)功能和/或通知限流(notification restrictor)功能来实现。通用PCI设备的示例可以包括但不限于NIC设备、APIC设备和Intel DLB(Dynamic Load Balancer)设备。NIC设备的示例例如可以包括但不限于比如ixgbe和i40e的通用网卡设备或者智能网卡设备。
在进行核间通知之前,需要对Sender 10和Receiver 30进行初始化处理。在对Sender 10初始化处理时,将PCI设备20的内存地址映射到Sender 10的虚拟空间地址。
图3示出了根据本说明书的实施例的中断信号发送方Sender的初始化过程的示例示意图。
在HOST场景下,线程访问PCI设备20(例如,RNIC)通常采用MMIO写操作。为了让VM场景下的线程也可以按照上述方式访问PCI设备20,需要引入额外的内存映射,即,将PCI设备20的MMIO内存(如Doorbell)的内存地址映射到VM中的线程虚拟地址空间。下面以在设备初始化过程中映射一个Doorbell为例说明上述过程。
前端线程调用Verbs接口“open_device”来初始化设备上下文。上述初始化调用被分为如图3所示的三个部分,步骤2a、2b和2c。
如图3所示,在2a,在虚拟化后端收到前端请求后,在RNIC上申请一个Doorbell,由此后端驱动获取所申请的Doorbell的HPA(HOST物理地址)doorbell_hpa。在2b,前端驱动识别PCI设备的Doorbell所在的MMIO内存,然后调用mmap()将该MMIO内存的内存地址映射到线程的虚拟地址空间。所申请的内存可以称为vDoorbell,它对应QEMU中的虚拟地址空间doorbell_hva。在步骤2c,后端驱动通过修改QEMU的页表创建doorbell_hva和doorbell_hpa之间的映射,由此,前端线程访问vDoorBell就会被定向到PCI设备上的真实Doorbell。按照这种方式,VM中的线程可以通过MMIO写操作的方式直接访问PCI设备上的Doorbell。
在对Receiver 30进行初始化时,需要根据Receiver 30的状态信息配置PCI设备的中断配置信息。在本说明书中,线程的状态信息可以包括线程所处运行态以及线程是否处于运行中。中断配置信息可以包括中断信号发送方式、目标CPU。
图4示出了根据本说明书的实施例的中断配置信息配置过程400的示例流程图。
如图4所示,在对Receiver 30进行初始化时,在410,判断Receiver 30是否处于Host Kernel。如果判断为Receiver 30处于Host Kernel,则在420,将PCI设备20的中断配置信息配置为中断配置信息1,即,将中断配置信息中的中断信号发送方式配置为将中断信号发送给Receiver 30所在处理器中的为Receiver 30配置的中断句柄InterruptHandler。例如,在Receiver 30处于Host Kernel时,可以在Host Kernel中为Receiver 30配置合适的Interrupt Handler。然后,将中断信号发送给所配置的Interrupt Handler。Interrupt Handler响应于所接收的中断信号执行相应处理。在本说明书中,术语“线程所在处理器”是指运行线程的处理器。处理器的示例例如可以包括但不限于CPU、MPU、GPU等。
如果判断为Receiver 30未处于Host Kernel,则在430,判断Receiver 30是否处于Guest Kernel。如果判断为Receiver 30未处于Guest Kernel(即,处于用户态,HR3线程),则在440,将PCI设备20的中断配置信息配置为中断配置信息2,即,将中断配置信息中的中断信号发送方式配置为将中断信号发送给Receiver 30所在处理器。例如,在一个示例中,可以将中断信号发送方式配置为通过信号量(semaphore)发送机制或eventfd将中断信号发送给Receiver 30所在处理器。
信号量发送机制利用PV操作来对信号量进行处理。信号量的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当信号量的值大于0时,表示当前可用资源的数量。当信号量的值小于0时,其绝对值表示等待使用该资源的进程个数。信号量的值由PV操作来改变。执行一次P操作意味着请求分配一个单位资源,信号量的值减1。执行一个V操作意味着释放一个单位资源,信号量的值加1。
PV操作由P操作原语和V操作原语组成。P操作(wait)申请一个单位资源,进程进入。V操作(signal)释放一个单位资源,进程出来。在执行P(S)操作后,将信号量S的值减1,即S=S-1。如果S<=0,则该进程继续执行。否则,将该进程置为等待状态,排入等待队列。在执行V(S)操作后,将信号量S的值加1,即S=S+1。如果S>0,则该进程继续执行。否则,释放队列中第一个等待信号量的进程。
如果判断为Receiver 30处于Guest Kernel,则在450,判断Receiver 30是否在运行中。如果判断为Receiver 30在运行中,则在460,将PCI设备20的中断配置信息配置为中断配置信息3,即,将中断配置为Posted Interrupt,并且将中断配置信息中的中断信号发送方式配置为将中断信号发送给Receiver 30所在处理器。Posted Interrupt允许APIC中断直接注入到guest而不需要VM-Exit。
如果判断为Receiver 30未运行,则在470,将PCI设备20的中断配置信息配置为中断配置信息4,即,将中断配置信息中的中断信号发送方式配置为将中断信号发送给HostKernel中的与Receiver 30所在虚拟处理器对应的物理处理器,所述物理处理器唤醒Receiver 30所在虚拟处理器。例如,物理处理器可以通过irqfd绑定并唤醒Receiver 30所在虚拟处理器。如有需要,可以将中断信号注入Guest Kernel,Guest Kernel中的IRQ响应可以根据需要进行调整。
图5示出了根据本说明书的实施例的用于在第一线程和第二线程之间发送中断信号的方法500的流程图。方法500由PCI设备20执行。
如图5所示,在510,PCI设备20经由PCI总线接收第一线程所在处理器通过MMIO写操作发送的通知消息。这里,MMIO写操作基于PCI设备的MMIO内存的内存地址所映射的Sender 10的虚拟空间地址。这里,MMIO内存例如可以包括Doorbell内存。在一个示例中,通知消息可以是mov指令。mov指令的源操作数存储PCI设备20的MMIO内存所需值,以及mov指令的目的地址是MMIO内存所映射到的Sender 10的虚拟空间地址。例如,mov指令可以是movreg,mem,其中,reg寄存器存储Doorbell内存所需值,mem表示Doorbell内存映射到的Sender 10的虚拟空间地址。
在520,响应于接收到通知消息,PCI设备20生成旨在Receiver 30的中断信号。这里,旨在Receiver 30的中断信号是指所生成的中断信号意在去往Receiver 30所在处理器。
在一个示例中,源操作数所存储的MMIO内存所需值可以包括固定值。相应地,在接收通知消息后,PCI设备20生成固定类型的中断信号。在另一示例中,源操作数所存储的MMIO内存所需值可以包括多个取值中的一个取值,每个取值对应一种类型的中断信号。相应地,响应于接收到mov指令,根据mov指令中的MMIO内存所需值,生成与所需值对应的中断信号。
在如上生成中断信号后,在530,按照PCI设备的中断配置信息所配置的中断信号发送方式向Receiver 30所在处理器发送中断信号。Receiver 30所在处理器接收到中断信号后,响应于所接收的中断信号执行相应处理。
可选地,在另一示例中,PCI设备20可以具有限流策略。所述限流策略的示例例如可以包括但不限于:PCI设备20在规定时段内针对中断信号的最大发送次数。例如,PCI设备20在一秒内针对每个中断最多发送M次。引入限流策略的主要原因是防止不信任用户利用该中断发送机制进行DOS攻击。在上述限流策略中,需要在PCI设备20中为每个中断信号设置一个计数器Counter,利用该计数器Counter来计数该中断信号在规定时段内的发送次数。
在PCI设备20具有限流策略的情况下,在生成中断信号后,可以根据限流策略进行限流判断,以判断是否需要对该中断信号执行限流处理。例如,在中断信号在规定时段内的发送次数达到最大发送次数时,判断为需要对该中断信号进行限流处理。在中断信号在规定时段内的发送次数未达到最大发送次数时,判断为不需要对该中断信号进行限流处理。在限流判断结果为需要限流时,不发送所述中断信号。在限流判断结果为不需要限流时,按照PCI设备的中断配置信息所配置的中断信号发送方式向Receiver30所在处理器发送该中断信号。
可选地,在另一示例中,PCI设备20可以具有分发策略。所述分发策略的示例例如可以包括但不限于:广播分发模式、信号量分发模式、1:1定向分发模式、1:N定向分发模式。在1:N定向分发模式下,响应于接收到通知消息,PCI设备20生成N个分别旨在N个Receiver30的中断信号。
在PCI设备20具有分发策略的情况下,PCI设备20根据分发策略,按照PCI设备20的中断配置信息所配置的中断信号发送方式向Receiver 30所在处理器发送所生成的中断信号。
可选地,在另一示例中,PCI设备20可以具有中断重映射表。在这种情况下,在生成中断信号,PCI设备20基于中断重映射表来对中断信号进行中断重映射,从而得到经过中断重映射后的中断信号。然后,PCI设备20按照PCI设备20的中断配置信息所配置的中断信号发送方式向Receiver30所在处理器发送经过中断重映射后的中断信号。
要说明的是,在一些实施例中,限流策略以及分发策略可以根据具体应用场景生成,并下发给PCI设备20。
利用根据本说明书的实施例的中断信号发送方案,通过将MMIO写操作交给Sender10所在处理器来执行,Sender 10可以通过处理器(CPU)的无序(out-of-order)执行功能,继续执行其它功能。按照这种处理方式,对于Sender 10,Sender 10“发起中断通知(kick)”的操作不会阻碍Sender 10执行后续代码,从而使得Sender 10处的中断通知的开销极小。
此外,由于Sender 10的kick操作的触发条件只是基于PCI设备20的内存地址的MMIO写(Doorbell)操作,从而Sender 10可以运行在任何一个运行态,如图2中示出的HR3/HR0,GR3/GR0,只要Sender 10能够访问PCI设备20的内存地址即可。
此外,利用根据本说明书的实施例的中断信号发送方案,整个时延主要涉及PCI总线上的数据传输,从而可以有效降低中断信号发送时延。而且,在根据本说明书的实施例的中断信号发送方案中,通过在PCI设备20中设置限流策略,可以有效地防止DOS攻击。
图6示出了根据本说明书的实施例的用于在第一线程和第二线程之间发送中断信号的装置(下文中称为“中断信号发送装置”)600的方框图。如图6所示,中断信号发送装置600包括通知接收单元610、中断信号生成单元620、中断配置信息配置单元630和中断信号发送单元640。
通知接收单元610被配置为经由PCI总线接收第一线程所在处理器通过MMIO写操作发送的通知消息,所述MMIO写操作基于PCI设备的MMIO内存的内存地址所映射的第一线程的虚拟空间地址实现。通知接收单元610的操作可以参考上面参照图5的510描述的操作。
中断信号生成单元620被配置为响应于接收到通知消息,生成旨在第二线程的中断信号。中断信号生成单元620的操作可以参考上面参照图5的520描述的操作。
中断配置信息配置单元630被配置为根据第二线程的状态信息配置PCI设备的中断配置信息。第二线程的状态信息可以包括第二线程所处运行态以及第二线程是否处于运行中。
中断信号发送单元640被配置为按照PCI设备的中断配置信息所配置的中断信号发送方式向第二线程所在处理器发送中断信号。
可选地,在一个示例中,如果第二线程处于Host Kernel,则中断配置信息配置单元630将中断信号发送方式配置为将中断信号发送给第二线程所在处理器中的为第二线程配置的Interrupt Handler。如果第二线程处于Guest Kernel且第二线程在运行中,则中断配置信息配置单元630将中断配置为Posted Interrupt,并且将中断信号发送方式配置为将中断信号发送给第二线程所在处理器。如果第二线程处于Guest Kernel且第二线程未运行,则中断配置信息配置单元630将中断信号发送方式配置为将中断信号发送给HostKernel中的与第二线程所在虚拟处理器对应的物理处理器,所述物理处理器唤醒第二线程所在虚拟处理器。如果第二线程处于用户态,则中断配置信息配置单元630将中断信号发送方式配置为将中断信号发送给第二线程所在处理器。
此外,可选地,在一个示例中,如果第二线程处于用户态,则中断配置信息配置单元630将中断信号发送方式配置为通过信号量发送机制或eventfd发送机制将中断信号发送给第二线程所在处理器。
此外,可选地,在一个示例中,所述通知消息可以包括mov指令,其中,mov指令的源操作数存储PCI设备的MMIO内存所需值,以及mov指令的目的地址是MMIO内存所映射到的第一线程的虚拟空间地址。
在一个示例中,源操作数所存储的MMIO内存所需值可以包括固定值。相应地,在接收通知消息后,中断信号生成单元620生成固定类型的中断信号。在另一示例中,源操作数所存储的MMIO内存所需值可以包括多个取值中的一个取值,每个取值对应一种类型的中断信号。相应地,在接收到mov指令后,中断信号生成单元620根据mov指令中的MMIO内存所需值,生成与所需值对应的中断信号。
可选地,在一个示例中,PCI设备可以具有限流策略。中断信号发送装置600还可以包括限流判断单元(未示出)。在生成中断信号后,所述限流判断单元根据限流策略进行限流判断。在限流判断单元判断为进行限流时,中断信号发送单元640不发送中断信号。在限流判断单元判断为不进行限流时,中断信号发送单元640按照PCI设备的中断配置信息所配置的中断信号发送方式向第二线程所在处理器发送中断信号。
可选地,在一个示例中,PCI设备具有分发策略。在这种情况下,中断信号发送单元640根据分发策略,按照PCI设备的中断配置信息所配置的中断信号发送方式向第二线程所在处理器发送中断信号。
可选地,在一个示例中,PCI设备可以具有中断重映射表。中断信号发送装置还可以包括中断重映射单元(未示出)。中断重映射单元基于中断重映射表来对中断信号进行中断重映射。然后,中断信号发送单元640按照PCI设备的中断配置信息所配置的中断信号发送方式向第二线程所在处理器发送经过中断重映射后的中断信号。
如上参照图1到图6,对根据本说明书实施例的中断信号发送方法和中断信号发送装置进行了描述。上面的中断信号发送装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
图7示出了根据本说明书的实施例的基于计算机实现的中断信号发送装置700的示意图。如图7所示,中断信号发送装置700可以包括至少一个处理器710、存储器(例如,非易失性存储器)720、内存730和通信接口740,并且至少一个处理器710、存储器720、内存730和通信接口740经由总线760连接在一起。至少一个处理器710执行在存储器中存储或编码的计算机程序(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机程序,其当执行时使得至少一个处理器710:经由PCI总线接收第一线程所在处理器通过MMIO写操作发送的通知消息,MMIO写操作基于PCI设备的MMIO内存的内存地址所映射的第一线程的虚拟空间地址实现;响应于接收到通知消息,生成旨在第二线程的中断信号;以及按照PCI设备的中断配置信息所配置的中断信号发送方式向第二线程所在处理器发送中断信号,其中,中断配置信息根据第二线程的状态信息配置,第二线程的状态信息包括第二线程所处运行态以及第二线程是否处于运行中。
应该理解,在存储器中存储的计算机程序被执行时使得至少一个处理器710执行本说明书的各个实施例中的结合图1-图6描述的各种操作和功能。
根据一个实施例,提供了一种比如计算机可读介质(例如,非暂时性计算机可读介质)的程序产品。计算机可读介质可以具有计算机程序(即,上述以软件形式实现的元素),该计算机程序被处理器执行时,使得处理器执行本说明书的各个实施例中的结合图1-图6描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的计算机程序。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此计算机可读代码和存储计算机可读代码的可读存储介质构成了本说明书的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
根据一个实施例,提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序当被处理器执行时,使得处理器执行本说明书的各个实施例中以上结合图1-图6描述的各种操作和功能。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (20)
1.一种用于在第一线程和第二线程之间发送中断信号的方法,所述方法由PCI设备执行,所述方法包括:
经由PCI总线接收第一线程所在处理器通过MMIO写操作发送的通知消息,所述MMIO写操作基于所述PCI设备的MMIO内存的内存地址所映射的所述第一线程的虚拟空间地址实现;
响应于接收到所述通知消息,生成旨在第二线程的中断信号;以及
按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号,其中,所述中断配置信息根据所述第二线程的状态信息配置,所述第二线程的状态信息包括所述第二线程所处运行态以及所述第二线程是否处于运行中。
2.如权利要求1所述的方法,其中,所述中断配置信息根据所述第二线程的状态信息配置包括:
如果所述第二线程处于Host Kernel,则将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器中的为所述第二线程配置的中断句柄;
如果所述第二线程处于Guest Kernel且所述第二线程在运行中,则将中断配置为Posted Interrupt,并且将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器;
如果所述第二线程处于Guest Kernel且所述第二线程未运行,则将所述中断信号发送方式配置为将所述中断信号发送给Host Kernel中的与所述第二线程所在虚拟处理器对应的物理处理器,所述物理处理器唤醒所述第二线程所在虚拟处理器;
如果所述第二线程处于用户态,则将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器。
3.如权利要求2所述的方法,其中,如果所述第二线程处于用户态,则将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器包括:
如果所述第二线程处于用户态,则将所述中断信号发送方式配置为通过信号量发送机制或eventfd发送机制将所述中断信号发送给所述第二线程所在处理器。
4.如权利要求1所述的方法,其中,所述通知消息包括mov指令,所述mov指令的源操作数存储所述PCI设备的MMIO内存所需值,以及所述mov指令的目的地址是所述MMIO内存所映射到的所述第一线程的虚拟空间地址。
5.如权利要求4所述的方法,其中,所述MMIO内存所需值包括多个取值中的一个取值,每个取值对应一种类型的中断信号,
响应于接收到所述通知消息,生成中断信号包括:
响应于接收到所述mov指令,根据所述mov指令中的MMIO内存所需值,生成与所需值对应的中断信号。
6.如权利要求1所述的方法,其中,所述MMIO内存包括doorbell内存。
7.如权利要求1所述的方法,其中,所述PCI设备具有限流策略,所述方法还包括:
在生成所述中断信号后,根据所述限流策略进行限流判断;
其中,在所述限流判断结果为进行限流时,不发送所述中断信号,
在所述限流判断结果为不进行限流时,按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号。
8.如权利要求1所述的方法,其中,所述PCI设备具有分发策略,
按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号包括:
根据所述PCI设备中的分发策略,按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号。
9.如权利要求1所述的方法,其中,所述PCI设备具有中断重映射表,所述方法还包括:
基于所述中断重映射表来对所述中断信号进行中断重映射,
按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号包括:
按照所述PCI设备的中断配置信息所配置的中断信号发送方式,向所述第二线程所在处理器发送经过中断重映射后的中断信号。
10.一种用于在第一线程和第二线程之间发送中断信号的装置,所述装置应用于PCI设备执行,所述方法包括:
通知接收单元,经由PCI总线接收第一线程所在处理器通过MMIO写操作发送的通知消息,所述MMIO写操作基于所述PCI设备的MMIO内存的内存地址所映射的所述第一线程的虚拟空间地址实现;
中断信号生成单元,响应于接收到所述通知消息,生成旨在第二线程的中断信号;
中断配置信息配置单元,根据第二线程的状态信息配置所述PCI设备的中断配置信息,所述第二线程的状态信息包括所述第二线程所处运行态以及所述第二线程是否处于运行中;以及
中断信号发送单元,按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号。
11.如权利要求10所述的装置,其中,
如果所述第二线程处于Host Kernel,则所述中断配置信息配置单元将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器中的为所述第二线程配置的中断句柄;
如果所述第二线程处于Guest Kernel且所述第二线程在运行中,则所述中断配置信息配置单元将中断配置为Posted Interrupt,并且将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器;
如果所述第二线程处于Guest Kernel且所述第二线程未运行,则所述中断配置信息配置单元将所述中断信号发送方式配置为将所述中断信号发送给Host Kernel中的与所述第二线程所在虚拟处理器对应的物理处理器,所述物理处理器唤醒所述第二线程所在虚拟处理器;
如果所述第二线程处于用户态,则所述中断配置信息配置单元将所述中断信号发送方式配置为将所述中断信号发送给所述第二线程所在处理器。
12.如权利要求11所述的装置,其中,如果所述第二线程处于用户态,则所述中断配置信息配置单元将所述中断信号发送方式配置为通过信号量发送机制或eventfd发送机制将所述中断信号发送给所述第二线程所在处理器。
13.如权利要求10所述的装置,其中,所述通知消息包括mov指令,所述mov指令的源操作数存储所述PCI设备的MMIO内存所需值,以及所述mov指令的目的地址是所述MMIO内存所映射到的所述第一线程的虚拟空间地址。
14.如权利要求13所述的装置,其中,所述MMIO内存所需值包括多个取值中的一个取值,每个取值对应一种类型的中断信号,
响应于接收到所述mov指令,所述中断信号生成单元根据所述mov指令中的MMIO内存所需值,生成与所需值对应的中断信号。
15.如权利要求10所述的装置,其中,所述PCI设备具有限流策略,所述装置还包括:
限流判断单元,在生成所述中断信号后,根据所述限流策略进行限流判断;
其中,在所述限流判断单元判断为进行限流时,所述中断信号发送单元不发送所述中断信号,
在所述限流判断单元判断为不进行限流时,所述中断信号发送单元按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号。
16.如权利要求10所述的装置,其中,所述PCI设备具有分发策略,所述中断信号发送单元根据所述分发策略,按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送所述中断信号。
17.如权利要求10所述的装置,其中,所述PCI设备具有中断重映射表,所述装置还包括:
中断重映射单元,基于所述中断重映射表来对所述中断信号进行中断重映射,
所述中断信号发送单元按照所述PCI设备的中断配置信息所配置的中断信号发送方式向所述第二线程所在处理器发送经过中断重映射后的中断信号。
18.一种用于在第一线程和第二线程之间发送中断信号的装置,所述装置包括:
至少一个处理器,
与所述至少一个处理器耦合的存储器,以及
存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求1到9中任一所述的方法。
19.一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行来实现如权利要求1到9中任一所述的方法。
20.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如权利要求1到9中任一所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111282442.6A CN114003363B (zh) | 2021-11-01 | 2021-11-01 | 线程间中断信号发送方法及装置 |
PCT/CN2022/116160 WO2023071508A1 (zh) | 2021-11-01 | 2022-08-31 | 线程间中断信号发送 |
US18/353,020 US11960924B2 (en) | 2021-11-01 | 2023-07-14 | Inter-thread interrupt signal sending based on interrupt configuration information of a PCI device and thread status information |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111282442.6A CN114003363B (zh) | 2021-11-01 | 2021-11-01 | 线程间中断信号发送方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114003363A true CN114003363A (zh) | 2022-02-01 |
CN114003363B CN114003363B (zh) | 2022-07-22 |
Family
ID=79926038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111282442.6A Active CN114003363B (zh) | 2021-11-01 | 2021-11-01 | 线程间中断信号发送方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11960924B2 (zh) |
CN (1) | CN114003363B (zh) |
WO (1) | WO2023071508A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115134372A (zh) * | 2022-06-23 | 2022-09-30 | 中国民航信息网络股份有限公司 | 一种数据处理方法和相关装置 |
WO2023071508A1 (zh) * | 2021-11-01 | 2023-05-04 | 支付宝(杭州)信息技术有限公司 | 线程间中断信号发送 |
CN117407183A (zh) * | 2022-09-23 | 2024-01-16 | 华为技术有限公司 | 线程间通信的方法及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103995733A (zh) * | 2014-05-27 | 2014-08-20 | 西安交通大学 | 一种基于物理资源穿透机制的轻量级嵌套虚拟化实现方法 |
CN108196946A (zh) * | 2017-12-28 | 2018-06-22 | 北京翼辉信息技术有限公司 | 一种微内核操作系统的分区多核方法 |
CN108196945A (zh) * | 2016-12-08 | 2018-06-22 | 阿里巴巴集团控股有限公司 | 一种核间通信方法、装置和虚拟化设备 |
US20190050356A1 (en) * | 2017-08-10 | 2019-02-14 | Infineon Technologies Ag | Virtual Machine Monitor Interrupt Support for Computer Processing Unit (CPU) |
CN110888827A (zh) * | 2018-09-10 | 2020-03-17 | 华为技术有限公司 | 数据传输方法、装置、设备及存储介质 |
CN112631744A (zh) * | 2019-09-24 | 2021-04-09 | 阿里巴巴集团控股有限公司 | 进程处理方法、装置、电子设备及计算机可读存储介质 |
CN112783600A (zh) * | 2020-07-01 | 2021-05-11 | 中兴通讯股份有限公司 | 中断处理方法、中断管理器、电子设备、计算机可读介质 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7243178B2 (en) * | 2003-05-16 | 2007-07-10 | Intel Corporation | Enable/disable claiming of a DMA request interrupt |
US20080024489A1 (en) * | 2006-07-28 | 2008-01-31 | Robert Allen Shearer | Cache Utilization Optimized Ray Traversal Algorithm with Minimized Memory Bandwidth Requirements |
US20080086575A1 (en) * | 2006-10-06 | 2008-04-10 | Annie Foong | Network interface techniques |
US7493436B2 (en) * | 2006-10-26 | 2009-02-17 | International Business Machines Corporation | Interrupt handling using simultaneous multi-threading |
US20090006507A1 (en) * | 2007-06-27 | 2009-01-01 | Mingnan Guo | System and method for ordering reclamation of unreachable objects |
US8145470B2 (en) * | 2007-06-27 | 2012-03-27 | Microsoft Corporation | Accelerated access device emulator access scheme in a hypervisor environment with child and root partitions |
US7761672B2 (en) * | 2007-06-28 | 2010-07-20 | Advanced Micro Devices, Inc. | Data movement and initialization aggregation |
US8364877B2 (en) * | 2009-12-16 | 2013-01-29 | Cisco Technology, Inc. | Implementing gang interrupts |
US8762994B2 (en) * | 2010-08-26 | 2014-06-24 | Intel Corporation | Power-optimized interrupt delivery |
US9104472B2 (en) * | 2013-02-04 | 2015-08-11 | Freescale Semiconductor, Inc. | Write transaction interpretation for interrupt assertion |
US9135062B2 (en) * | 2013-04-09 | 2015-09-15 | National Instruments Corporation | Hardware assisted method and system for scheduling time critical tasks |
US9678903B1 (en) * | 2014-10-15 | 2017-06-13 | Intel Corporation | Systems and methods for managing inter-CPU interrupts between multiple CPUs |
US9766890B2 (en) * | 2014-12-23 | 2017-09-19 | International Business Machines Corporation | Non-serialized push instruction for pushing a message payload from a sending thread to a receiving thread |
US9772870B2 (en) * | 2015-01-29 | 2017-09-26 | Red Hat Israel, Ltd. | Delivering interrupts to virtual machines executing privileged virtual machine functions |
US20180046536A1 (en) * | 2016-08-09 | 2018-02-15 | Microsoft Technology Licensing, Llc | Guest Enlightened Virtual Faults |
US10216256B2 (en) * | 2016-10-03 | 2019-02-26 | Microsoft Technology Licensing, Llc | Power conservation of computing components using forced idle state |
US10956220B2 (en) * | 2017-06-04 | 2021-03-23 | Apple Inc. | Scheduler for amp architecture using a closed loop performance and thermal controller |
CN109144679B (zh) * | 2017-06-27 | 2022-03-29 | 华为技术有限公司 | 中断请求的处理方法、装置及虚拟化设备 |
CN114077379B (zh) * | 2020-08-19 | 2024-03-26 | 华为技术有限公司 | 一种计算机设备、异常处理的方法以及中断处理的方法 |
CN114003363B (zh) * | 2021-11-01 | 2022-07-22 | 支付宝(杭州)信息技术有限公司 | 线程间中断信号发送方法及装置 |
-
2021
- 2021-11-01 CN CN202111282442.6A patent/CN114003363B/zh active Active
-
2022
- 2022-08-31 WO PCT/CN2022/116160 patent/WO2023071508A1/zh unknown
-
2023
- 2023-07-14 US US18/353,020 patent/US11960924B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103995733A (zh) * | 2014-05-27 | 2014-08-20 | 西安交通大学 | 一种基于物理资源穿透机制的轻量级嵌套虚拟化实现方法 |
CN108196945A (zh) * | 2016-12-08 | 2018-06-22 | 阿里巴巴集团控股有限公司 | 一种核间通信方法、装置和虚拟化设备 |
US20190050356A1 (en) * | 2017-08-10 | 2019-02-14 | Infineon Technologies Ag | Virtual Machine Monitor Interrupt Support for Computer Processing Unit (CPU) |
CN108196946A (zh) * | 2017-12-28 | 2018-06-22 | 北京翼辉信息技术有限公司 | 一种微内核操作系统的分区多核方法 |
CN110888827A (zh) * | 2018-09-10 | 2020-03-17 | 华为技术有限公司 | 数据传输方法、装置、设备及存储介质 |
CN112631744A (zh) * | 2019-09-24 | 2021-04-09 | 阿里巴巴集团控股有限公司 | 进程处理方法、装置、电子设备及计算机可读存储介质 |
CN112783600A (zh) * | 2020-07-01 | 2021-05-11 | 中兴通讯股份有限公司 | 中断处理方法、中断管理器、电子设备、计算机可读介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023071508A1 (zh) * | 2021-11-01 | 2023-05-04 | 支付宝(杭州)信息技术有限公司 | 线程间中断信号发送 |
US11960924B2 (en) | 2021-11-01 | 2024-04-16 | Alipay (Hangzhou) Information Technology Co., Ltd. | Inter-thread interrupt signal sending based on interrupt configuration information of a PCI device and thread status information |
CN115134372A (zh) * | 2022-06-23 | 2022-09-30 | 中国民航信息网络股份有限公司 | 一种数据处理方法和相关装置 |
CN115134372B (zh) * | 2022-06-23 | 2023-08-29 | 中国民航信息网络股份有限公司 | 一种数据处理方法和相关装置 |
CN117407183A (zh) * | 2022-09-23 | 2024-01-16 | 华为技术有限公司 | 线程间通信的方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20230359484A1 (en) | 2023-11-09 |
WO2023071508A1 (zh) | 2023-05-04 |
US11960924B2 (en) | 2024-04-16 |
CN114003363B (zh) | 2022-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114003363B (zh) | 线程间中断信号发送方法及装置 | |
CN107046508B (zh) | 报文接收方法及网络设备 | |
US20180121366A1 (en) | Read/write request processing method and apparatus | |
US9766891B2 (en) | Apparatus, system, and method for persistent user-level thread | |
US9201682B2 (en) | Virtualized device reset | |
US9477501B2 (en) | Encapsulation of an application for virtualization | |
US8544010B2 (en) | Providing notification to speculatively waking up target virtual machine for an I/O event using multiple virtual machines and processors | |
US20130174144A1 (en) | Hardware based virtualization system | |
CN107977251B (zh) | 对在虚拟化系统中的共享寄存器的排他访问 | |
US9299121B2 (en) | Preemptive context switching | |
EP3170086A1 (en) | On-demand shareability conversion in a heterogeneous shared virtual memory | |
US20170076421A1 (en) | Preemptive context switching of processes on an accelerated processing device (apd) based on time quanta | |
JP2008527506A (ja) | Os隔離シーケンサー上のユーザーレベルのマルチスレッド化をエミュレートする機構 | |
US9256465B2 (en) | Process device context switching | |
US8996774B2 (en) | Performing emulated message signaled interrupt handling | |
EP2817755B1 (en) | Directed wakeup into a secured system environment | |
CN110858164B (zh) | 进程间通信方法、装置及计算机可读介质 | |
CN113032154B (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
US11768696B2 (en) | Security for microengine access | |
CN117407054A (zh) | 中断处理方法、电子设备和存储介质 | |
Gerangelos et al. | vphi: Enabling xeon phi capabilities in virtual machines | |
Zhang et al. | NVMe-over-RPMsg: A Virtual Storage Device Model Applied to Heterogeneous Multi-Core SoCs | |
CN113439260A (zh) | 针对低时延存储设备的i/o完成轮询 | |
US11782713B1 (en) | Security vulnerability mitigation using address space co-execution | |
US20230251883A1 (en) | Coordinating timer access for virtual machines using peripheral component interface cards |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |